Objective-C instancetype关键字

instancetype是clang 3.5开始,clang提供的一个关键字

表示某个方法返回的未知类型的Objective-C对象

instancetype会告诉编译器当前的类型,这点和NSObject *类似,但id对于编译器却是无类型的,调用任何方法不会给出错误提示

instancetype类型:

(1)instancetype会让编译器检查实例化对象的准确类型

(2)instancetype只能用于返回类型,不能当做参数使用

instancetype & id的比较:

(1) instancetype在类型表示上,跟id一样,可以表示任何对象类型

(2) instancetype只能用在返回值类型上,不能像id一样用在参数类型上

(3) instancetype比id多一个好处:编译器会检测instancetype的真实类型