1 .依照cocoa的命名规则,alloc,init这类方法,如果以id为返回类型,会返回类本身的类型,但类方法的返回类型,LLVM(clang)编译器无法判断,也就是说如果       用id作为返回类型,有可能会将一个编译时错误变为一个运行时错误,instancetype则能够保证编译器正确判断返回的类型。

2.  instancetype只能作为返回值,不能像id那样作为参数。

3 .+ (id)fooWithBar:(NSInteger)bar;  编译器不会自动将id 转换成 instancetype

对于 init,他变得更加的复杂。比如当你写成如下格式

- (id)initWithBar:(NSInteger)bar

- (id)initWithBar:(NSInteger)bar

编译器会用如下形式保护起来:

- (instancetype)initWithBar:(NSInteger)bar

当你自定义初始化方法后 如果放回的是 id  然后调用其它类的方法时 编译时是不会报错 只有在运行时会报错

所以在你自定义初始化方法时 让放回值为 instancetype

instancetype 与id的更多相关文章

  1. OC 类方法,对象方法,构造方法以及instancetype和id的异同

    OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...

  2. 转载:Objective-C中的 instancetype 和 id 关键字

    Objective-C中的instancetype和id关键字 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/16994 ...

  3. iOS 用instancetype代替id作返回类型有什么好处?

    2014-07-07更新:苹果在iOS 8中全面使用instancetype代替id Steven Fisher:只要一个类返回自身的实例,用instancetype就有好处. @interface ...

  4. Objective-C中的instancetype和id区别

    目录(?)[-] 有一个相同两个不同相同 Written by Mattt Thompson on Dec 10th 2012 一什么是instancetype 二关联返回类型related resu ...

  5. (转)Objective-C中的instancetype和id区别

    有一个相同两个不同.相同 Written by Mattt Thompson on Dec 10th, Objective-C is a rapidly evolving language, in a ...

  6. 【转】Objective-C中的instancetype和id关键字

    原文:http://blog.csdn.net/wzzvictory/article/details/16994913 一.什么是instancetype instancetype是clang 3.5 ...

  7. instancetype 与 id for Objective-C

    instancetype.id.NSObject的区别 - simalone   1.instancetype只能用于方法的返回类型,而id用处和NSObject *类似. 2.instancetyp ...

  8. Objective-C中instancetype和id的区别

    要区分instancetype和id,首先要弄清楚什么是关联返回类型(Related Result Type). 关联返回类型即一个方法的返回类型就是调用这个方法的调用者的类型.具有下列条件的方法具有 ...

  9. instancetype和id的区别

    一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以 ...

  10. Objective-C中的instancetype与id的区别

    一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以 ...

随机推荐

  1. CSLA.Net学习(3)INotifyPropertyChanged和IDataErrorInfo

    今天晕晕糊糊的看CSLA.net,希望能找到验证数据正确性的方法,还是摸索出了INotifyPropertyChanged, IDataErrorInfo接口的使用方法,通过INotifyProper ...

  2. POJ2195:Going Home(费用流入门)

    http://poj.org/problem?id=2195 #include <iostream> #include <stdio.h> #include <strin ...

  3. 52. N-Queens II(数个数)

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  4. Openresty学习汇总

    在锤子科技发布会上,提到给Openresty的捐赠的事情,出于好奇我在是网上查询了Openresty,看到了Openresty的官网(http://openresty.org/en/).看到介绍说的很 ...

  5. flex与j2ee的结合(flex+Spring)

    分类: flex spring2012-04-25 02:11 1262人阅读 评论(1) 收藏 举报 flexspringactionscriptjavapropertiesservlet   目录 ...

  6. aTool在线工具

    在线HTTP POST/GET接口测试工具 - aTool在线工具 地址:http://www.atool.org/httptest.php在线接口测试工具接口测试是测试系统组件间接口的一种测试.接口 ...

  7. maven和gradle中,dependency和plugin的区别

    dependency引入的东西 作用:代码编译/运行时所需要的东西 打包:项目打包后这些东西基本都在(一般都在). 例如:JSON工具包GSON(com.google.code.gson),不仅开发时 ...

  8. linux第五周

    第五周 给MenuOS增加time和time-asm命令 更新menu代码到最新版 在main函数中增加MenuConfig 增加对应的Time函数和TimeAsm函数 make rootfs 使用g ...

  9. 20145315 《Java程序设计》第六周学习总结

    20145315 <Java程序设计>第六周学习总结 教材学习内容总结 第十章:输入输出 10.1.1 数据有来源与目的,衔接两者的是串流对象. read()方法每次尝试读取数据,并返回实 ...

  10. POJ 2253 Frogger(最短路&Floyd)题解

    题意:想给你公青蛙位置,再给你母青蛙位置,然后给你剩余位置,问你怎么走,公青蛙全力跳的的最远距离最小. 思路:这里不是求最短路径,而是要你找一条路,青蛙走这条路时,对他跳远要求最低.这个思想还是挺好迁 ...