对于Objective-C初学者而言,用instancetype和id来定义一个简易的构造函数,到底区别在哪?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于Objective-C初学者而言,用instancetype和id来定义一个简易的构造函数,到底区别在哪?相关的知识,希望对你有一定的参考价值。
在接触OC语言一段时间后,我们大家都知道未知类型的对象可以用 id 表示,那么 instancetype 是用来干嘛的?
1.instancetype的作用
就是使那些非关联返回类型的方法返回所在类的类型
2.使用instancetype好处
a.能够确定对象的类型,能够帮助编译器更好的为我们定位代码书写问题
b.编译器能够根据返回的数据类型检测是否实现方法,有利于开发者在编译阶段发现错误。
3.instancetype和id的异同
a.相同点
都可以作为方法的返回类型
b.不同点
①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;
②instancetype只能作为返回值,不能像id那样作为参数
3.总结:虽然用instancetype代替id作为返回值的确没有技术上的好处,这是因为编译器自动将id转化成了instancetype。初学者会以为init返回的值类型是id,其实编译器返回的是instancetype。
最后借用别人总结的九个字去概括上面所有的结论,使用instancetype有三点好处:明确性 程式化 一致性。
以上是关于对于Objective-C初学者而言,用instancetype和id来定义一个简易的构造函数,到底区别在哪?的主要内容,如果未能解决你的问题,请参考以下文章