• 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;
      }
  • 相关阅读:
    windows&nbsp;下搭建apache&nbsp;php&nbsp;mysql&nbsp;p…
    PHP&nbsp;VC9和VC6以及Thread&nbsp;Safe和Non…
    mysql数据库插入中文时出现ERROR&nbsp;1…
    phpmyadmin&nbsp;配置
    Linux系统安装时分区的选择【转】
    汉字 Unicode 编码范围
    Linux 程序后台运行
    添加用户username到sudo组
    nautilus
    记录一下自己的.tmux.conf,.vimrc
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7239863.html
Copyright © 2020-2023  润新知