在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
instancetype clang 3.5 提供的关键字, 表示:某方法返回未知类型的OC对象 都知道id任意类型关键字,为什么还会出现一个新的关键字? 返回关联类型 1、类方法中,alloc, new开头 2、实例方法中 autorelease,init,retain,self开头 会返回方法所在类的类型的对象,即关联返回类型的方法。 这些方法的返回结果以方法所在的类为类型。 for example @interface NSObject +(id)alloc; -(id)init; @end 当我们初始化 NSArray时 NSArray*array = [[NSArray alloc] init]; [NSArray alloc]返回类型属于关联返回类型,NSArray * instancetype 假如一个不是关联返回类型的方法 @interface NSArray +(id)constructAnArray; @end 当我们初始化的时候 [NSArray constructAnArray] 得到返回类型和方法声明的返回类型一样,是id 如果使用 instancetype 作为返回类型 @interface NSArray +(instancetype)constructAnArray; @end 同样方式初始化 [NSArray constructAnArray] 得到的返回类型和方法所在类型相同,是 NSArray *
instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型! 好处:确定对象类型帮编译器更好定位代码问题。 相同点: 不同点: 2、instancetype只能作为返回值,id可以作为参数. -(void)setValue:(instancetype)value { } 报错! 应该写成 -(void)setValue:(id)value { }
|
请发表评论