对于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来定义一个简易的构造函数,到底区别在哪?的主要内容,如果未能解决你的问题,请参考以下文章

cellForRowAtIndexPath 是如何工作的?

对于初学者而言,前期如何理解编程

Objective-C Runtime 文档翻译—序言

用 Xcode 学习objective-c?

在objective-c中归档对象内的对象

在 iOS 上使用 Parse BaaS:我应该使用 PFFile 来保存原始类型和 Objective-C 类吗?