id返回不确定类型的对象(也就是任意类型的对象),- (id)arrayWithData;返回的就是不确定类型的对象,如果执行数组的方法, [- (id)arrayWithData objectOfIndex:0]编译时不会报错,但运行时会报错,找不到该方法。

instancetype返回的类型是该类的对象,- (instancetype)arrayWithData;如果执行数组的方法, [- (instancetype)arrayWithData objectOfIndex:0]编译时不会报错,运行时也不会报错。

总结一下,instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!

2、好处

能够确定对象的类型,能够帮助编译器更好的为我们定位代码书写问题,比如:

  1. [[[NSArray alloc] init] mediaPlaybackAllowsAirPlay]; //  "No visible @interface for `NSArray` declares the selector `mediaPlaybackAllowsAirPlay`"
  2. [[NSArray array] mediaPlaybackAllowsAirPlay]; // (No error)
第一行代码,由于[[NSArray alloc]init]的结果是NSArray*,这样编译器就能够根据返回的数据类型检测出NSArray是否实现mediaPlaybackAllowsAirPlay方法。有利于开发者在编译阶段发现错误。

第二行代码,由于array不属于关联返回类型方法,[NSArray array]返回的是id类型,编译器不知道id类型的对象是否实现了mediaPlaybackAllowsAirPlay方法,也就不能够替开发者及时发现错误。

转载于:https://www.cnblogs.com/rankilau/p/4195061.html

id和instancetype的区别相关推荐

  1. input 的id 和name什么区别

    在表单(input)中id和name的区别      但是name在以下用途是不能替代的: 1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多name会同时对应多 ...

  2. [css] css中class和id选择器有什么区别?

    [css] css中class和id选择器有什么区别? id 在部分浏览器的 js 中会直接生成同名变量: id 的唯一性,获取该 id 的 dom 时,会取同名 id 的前者: id 层叠权重非常高 ...

  3. Id vs Instancetype

    我写了一篇 Id vs Instancetype的文章,欢迎访问! 转载于:https://www.cnblogs.com/wangrui-techbolg/p/3530690.html

  4. html代码id,浅谈html中id和name的区别实例代码

    浅谈html中id和name的区别实例代码 更新时间:2008年07月28日 23:00:55   作者: 这个是form里面的name与id的区别 我们可以通过一段代码来分析一下其中的微妙差别: 在 ...

  5. 如何区分电梯卡为id卡ic卡_UID卡是什么?和IC卡、ID卡有什么区别?

    原标题:UID卡是什么?和IC卡.ID卡有什么区别? 生活中,我们经常用到门禁卡.考勤卡.电梯卡还有停车卡,这些功能是怎么实现的呢?这是靠卡里封装的芯片和线圈来实现各种功能,不同的芯片频率.容量.读写 ...

  6. 转有关IC卡与ID卡的重大区别

    转有关IC卡与ID卡的重大区别 2007年05月08日 上午 08:13 目前许多建设智能小区或楼宇的发展商都要上一卡通的项目,但对于是采用IC卡,还是采用ID卡做一卡通的问题上,还存在着很大的疑惑和 ...

  7. id 与 name 的区别

    id 与 name 的区别 id和name都是在类中引用bean是用到的来判别bean的标识,当id和name用来表示一个参数时,二者的作用是相同的: <bean class="org ...

  8. meta name id class 标签的区别

    meta https://zhidao.baidu.com/question/2052283721385566387.html name 跟 id 的区别 http://blog.csdn.net/f ...

  9. java中id name_关于DOM对象中的id与name的区别

    例1: value="admin"> id="un" name="username" value="silas"& ...

最新文章

  1. 在CentOS 6.9 64bit上安装jdk1.8
  2. supervisord+supervisorclusterctl+supervisord-monit
  3. java real football_Java学习--设计模式之行为型模式(三)
  4. Redis中的zset 存储结构(实现)原理
  5. 尾递归优化原理与Python实现(以Fibonacci数列和小明爬楼梯问题为例)
  6. ASP.NET事件回传机制
  7. 鸿蒙系统微信红包,微信红包王版app下载-最新微信红包王版下载-安卓苹果鸿蒙版-155175软件...
  8. windows无法格式化u盘_U盘无法格式化的解决方法
  9. 最新最全的微信小程序入门学习教程,微信小程序零基础入门到精通
  10. 16进制地址编码速算内存容量
  11. EDR端点检测与响应
  12. Task02 python与excel
  13. C语言实现建立顺序表,修改顺序表,插入顺序表,删除顺序表
  14. 计算机云开头的词语,云字开头的三字词语
  15. 软件测试基础知识回顾复习
  16. 学生机房管理服务器系统设计,机房学生论文,关于基于分布式结构的机房管理信息系统的设计实现相关参考文献资料-免费论文范文...
  17. jQueryHTML5 UI框架Ignite UI 13.2新功能大揭秘(二)
  18. 给计算机老师致歉信,学生给老师的道歉信(15篇)
  19. vue-clipboard2 异步实现复制口令
  20. office2010 SP1补丁,先打visio2010sp1,再打officesuite2010sp1则打不上。

热门文章

  1. hdu 4267 多维树状数组
  2. NO1:在Windows端安装SecureCRT来连接Linux
  3. JPDL3.1规范手册
  4. Java 多线程异常捕获Runnable实现
  5. java分页查询_面试官:数据量很大,分页查询很慢,有什么优化方案?
  6. 隐马尔科夫模型C#类库调用示例
  7. wordpress房产信息网_Realia v3.1.2 wordpress房地产模板 租房网站模板
  8. mongo-express 远程代码执行漏洞(CVE-2019-10758)
  9. xss测试工具(xsstrike基于python)
  10. 微软MS10-046漏洞的利用