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.

 

posted @ 2015-05-02 00:33  狠角色Cisse  阅读(132)  评论(0编辑  收藏  举报