instancetype VS id
英文好的直接读下面链接的文章就好了:
http://stackoverflow.com/questions/8972221/would-it-be-beneficial-to-begin-using-instancetype-instead-of-id
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html#//apple_ref/doc/uid/TP40014150-CH1-SW11
简单小结一下,就这么几点:
1 使用 instancetype 编译器和IDE 会做类型检查,而id不会做完整的类型检查
2 instancetype 只能用来定义OC方法的返回值类型
3 显式的使用init方法的时候,二者本质上是无区别的,即使用的是id,编译器也会翻译成instancetype. 但毫无疑问,使用instancetype更清晰.
4 instancetype有类型检查. 主要体现在+ (instancetype)factoryMethodA; 之类的方法上.
5 从一致性的角度考虑,所有用id作为返回值类型的方法都应该将返回值类型替换为instancetype.