码迷,mamicode.com
首页 > 其他好文 > 详细

对于Objective-C初学者而言,用instancetype和id来定义一个简易的构造函数,到底区别在哪?

时间:2016-05-26 16:04:01      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

在接触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来定义一个简易的构造函数,到底区别在哪?

标签:

原文地址:http://www.cnblogs.com/mengjinxiang/p/5531439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!