1:什么是instancetype
instancetype是clang 3.5 开始提供的一个关键字,表示某个方法返回的位置类型的OC对象。
2:instancetype的作用
如果不是一个关联返回类型的方法,如下:
@interface NSArray
+ (id)constructAnArray;
@end
当我们使用如下方法初始化NSArray时:
[NSArray constructAnArray];
根据Cocoa的方法命名规范,得到的返回类型就和方法声明的类型一样,是id。
但是如果使用instancetype作为返回类型,如下:
@interface NSArray
+ (instancetype)constructAnArray;
@end
当使用相同方法初始化NSArray时:
[NSArray constructAnArray];
得到的返回类型和方法所在类的类型相同,是NSArray *
总结一下,instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型。
3:instancetype和id的异同
相同点:
都可以作为方法的返回类型
不同点:
①:instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。
②:instancetype只能作为返回值,不能像id那样作为参数。