OC中instancetype和id的区别

一、什么是instancetype

instancetype是clang 3.5开始提供的一个关键字,表示某个方法返回的未知类型的OC对象。
之前就接触过关键字id也可以用来表示未知类型的对象,那这两个有什么区别呢?

二、id和instancetype的区别

区别一

·instancetype用来在编译期确定实例的类型
·id在编译时期编译器不检查类型,只能返回未知类型的对象,调用任何方法不会给出错误提示

区别二

·instancetype只能作为返回值
·id既可以作为返回值也可以作为参数

区别三

·对于init方法,id和instancetype是没有区别的,因为编译器会把id优化成instancetype,当明确返回类型就是当前class时,使用instancetype能避免id带来的编译不出错误的情况。

你可能感兴趣的:(OC中instancetype和id的区别)