id(instancetype)解析、容错处理

2017-11-01  本文已影响0人  李琪_59dc

instancetype解析:

在构造方法中会看到:

-(instancetype)init{
    /*self 是一个指针,表示当前调用该方法的对象本身*/
    /*super是一个关键字,用来调用父类方法*/
    self=[super init];   //最基本的初始化操作
    if(self){
       //要初始化的内容
    }
}

id

一般用id后要进行容错处理:

容错处理:一般先判断对象类型,再判断能否响应某个方法,最后再执行。

  1. 确定对象类型

注意:NSString NSArray NSDictionary NSNumber
不能判断类的对象,因为它们底层是以“类簇”方式实现的,类方法都是私有子类提供的,本身只是对外暴露一个类。

  1. 判断能否响应方法
    Person *value = [Person new];
    [value length]; 判断能否响应方法
// SEL action = @selector ( length )
if(value respondsToSelector: @selctor(length)){   
    [value length];
}
else{
    NSLog(@“无法响应该方法”);
}
if ( [ Person instancesRespondsToSelector:@selector(sayHello) ] ) {
    NSLog(@“Person 类实现了 sayHello方法”);
}
else{
    NSLog(@“Person 类没有实现 sayHello方法”);
}
上一篇下一篇

猜你喜欢

热点阅读