【iOS入门】instancetype和id的区别

区别1:

在ARC(Auto Reference Count)环境下:

instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型, 运行时检查类型.

在MRC(Manual Reference Count)环境下:

instancetype和id一样,不做具体类型检查

区别2:

id可以作为方法的参数,但instancetype不可以

instancetype只适用于初始化方法和便利构造器的返回值类型

作者:三木成森
链接:https://www.jianshu.com/p/bd913b3a8e93
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/mamamia/p/12152905.html

时间: 2024-11-06 04:09:46

【iOS入门】instancetype和id的区别的相关文章

instancetype和id的区别

一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? 二.关联返回类型(related result types) 根据Cocoa的命名规则,满足下述规则的方法: 1.类方法中,以alloc或new开头 2.实例方法中,以autorelease,init,retain或self开头 会

iOS instancetype和id的区别

区别: 1>instancetype在类型表示上,跟id一样,可以表示任何对象类型 2>instancetype只能用在返回值类型上,不能像id一样用在参数类型上 3>instancetype比id多一个好处:编译器会检测instancetype的真实类型 第3点的解释: 在下面这种情况下 // Person.m文件里 + (id)person{ return [[self alloc] init]; } // mainViewController.m,下面这行代码,用字符串类型的指针指

iOS instancetype 跟 id 的区别

instancetype:在类型表示上,跟id一样,可以表示任何数据类型; instancetype只能用在返回值类型上,不能像id一样用在参数类型上; instancetype比id多一个好处:编译器会检测instancetype的真实类型.

[iOS]用instancetype代替id作返回类型有什么好处?(转)

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:管策链接:http://zhuanlan.zhihu.com/Foundation/19569459来源:知乎 2014-07-07更新:苹果在iOS 8中全面使用instancetype代替id Steven Fisher:只要一个类返回自身的实例,用instancetype就有好处. @interface Foo:NSObject - (id)initWithBar:(NSInteger)bar; // initial

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

2014-07-07更新:苹果在iOS 8中全面使用instancetype代替id Steven Fisher:只要一个类返回自身的实例,用instancetype就有好处. @interface Foo:NSObject - (id)initWithBar:(NSInteger)bar; // initializer + (id)fooWithBar:(NSInteger)bar; // convenience constructor @end 对于简易构造函数(convenience co

OC中instanceType和id的区别

今天在学习oc的过程中遇到关于instanceType和id的问题不太明白.查了一些资料后,总结它们两个的区别和联系主要有以下几点: 相同点:instanceType和id都是作为方法的返回类型而被使用. 不同点: 1.instancetype可以返回和方法所在类相同类型的对象,id返回的类型只能是未知类型的对象: 对于简易构造函数,用instancetype更好一点,因为编译器因此会知道返回的是什么类型的方法对象,而用id则不会,它只会返回未知类型的对象: 2.instancetype在错误检

Objective-C中的instancetype与id的区别

一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? 二.关联返回类型(related result types) 根据Cocoa的命名规则,满足下述规则的方法: 1.类方法中,以alloc或new开头 2.实例方法中,以autorelease,init,retain或self开头 会

instancetype 和 id 的区别

原文:http://blog.csdn.net/sirodeng/article/details/50516478 一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? 二.关联返回类型(related result types) 根据Cocoa的命名规则,满足下述规则的方法: 1.类

instance和id的区别

instancetype和id的区别,objective-c instancetype   clang 3.5 提供的关键字,  表示:某方法返回未知类型的OC对象 都知道id任意类型关键字,为什么还会出现一个新的关键字? 返回关联类型 1.类方法中,alloc, new开头 2.实例方法中 autorelease,init,retain,self开头 会返回方法所在类的类型的对象,即关联返回类型的方法. 这些方法的返回结果以方法所在的类为类型. for example @interface N