• 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;
      }
  • 相关阅读:
    算法图解-散列表
    算法图解-笔记
    ERROR:cannot read property 'getAttribute' of null 报错处理
    Error: Cannot find module 'node-sass' 报错处理
    一、Spring Cloud概述
    十、ActiveMQ多节点集群
    九、ActiveMQ的消息存储和持久化
    八、ActiveMQ的传输协议
    七、SpringBoot整合ActiveMQ
    六、Spring整合ActiveMQ
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7239863.html
Copyright © 2020-2023  润新知