zoukankan      html  css  js  c++  java
  • respondsToSelector的相关使用

    • -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例
    • -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例
    • -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
    • +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上,而此方法只能用在类上.
    • -(id) performSelector: selector

       

      SEL sel = @selector (start:) ; // 指定action  

      if ([obj respondsToSelector:sel]) 

      { //判断该对象是否有相应的方法  

      [obj performSelector:sel withObject:self]; //调用选择器方法  

      使用[[UIApplication sharedApplication] keyWindow]查找应用程序的主窗口对象


       

      respondsToSelector判断是否实现了某方法

      Tester.h

      #import <Foundation/Foundation.h>


      @interface Tester : NSObject {

      }

      -(void) test:(NSString*) msg;

      -(void) notImp;

      @end
      Tester.m
      #import "Tester.h"

      @implementation Tester

      -(void) test:(NSString*) msg
      {
      NSLog(@"%@", msg);
      }

      @end
      注意:没有实现notImp方法

      main.m

      #import <Foundation/Foundation.h>
      #import "Tester.h"

      int main (int argc, const char * argv[])
      {

      NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

      id tester = [[Tester alloc] init];//注意,这里使用id

      SEL testSelector = @selector(test:);
      SEL notImpSelector = @selector(notImp:);

      if([tester respondsToSelector:testSelector])
      {
      //tester.m中实现了test方法
      [tester test:@"invoke test method"];
      }
      if([tester respondsToSelector:notImpSelector])
      {
      //test.m中没有实现此主就去
      [tester notImp];
      }


      [pool drain];
      return 0;
      }
  • 相关阅读:
    Python:如何显示进度条
    Python:常用函数封装
    Javascript:常用函数封装
    Javascript:alert(1)可以这样写以绕过filter
    SQL注入备忘单
    Web渗透:PHP字符编码绕过漏洞总结
    SQLi Lab的视频教程和文字教程
    Python:使用基于事件驱动的SAX解析XML
    Python:渗透测试开源项目【源码值得精读】
    Python:SQLMap源码精读—start函数
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7239863.html
Copyright © 2011-2022 走看看