A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马