黑马程序员技术交流社区

标题: OC-动态类型检测-判断对象能否响应指定的方法 [打印本页]

作者: wangchao1992    时间: 2015-8-17 17:35
标题: OC-动态类型检测-判断对象能否响应指定的方法
本帖最后由 wangchao1992 于 2015-8-17 17:46 编辑

动态类型检测的第二部分
1) 判断实例对象能否响应(调用)指定的方法      (常用方法)
        格式: [对象 respondsToSelector:方法的sel];
       1、方法响应的检测
        Animal *ani = [Dog new];
        SEL s1 = @selector(eat); //把eat包装成SEL类型
        BOOL isRespond = [ani respondsToSelector:s1];
                    1
        if (isRespond) {
            [(Dog *)ani eat];
        }else{
            NSLog(@"该对象不能调用此方法!");
        }
        2、判断类中有没有(调用)指定的方法
           Animal *ani = [Dog new];
          SEL s1 = @selector(eat); //把eat包装成SEL类型
        // 1
        isRespond = [Dog instancesRespondToSelector:s1];
        // 1
        isRespond = [Dog instancesRespondToSelector:@selector(run)];
        // 0  Dog 类中,没有定义test方法
        isRespond = [Dog instancesRespondToSelector:@selector(test)];

#import <Foundation/Foundation.h>
@interface Animal : NSObject
-(void)run;
@end

#import "Animal.h"
@interface Dog : Animal
-(void)eat;
@end






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2