iOS - instancetype和id的区别

1:什么是instancetype

       instancetype是clang 3.5 开始提供的一个关键字,表示某个方法返回的位置类型的OC对象。


2:instancetype的作用

如果不是一个关联返回类型的方法,如下:

@interface NSArray

+ (id)constructAnArray;

@end 

当我们使用如下方法初始化NSArray时:

[NSArray constructAnArray];

根据Cocoa的方法命名规范,得到的返回类型就和方法声明的类型一样,是id。

但是如果使用instancetype作为返回类型,如下:

@interface NSArray

+ (instancetype)constructAnArray;

@end

当使用相同方法初始化NSArray时:

[NSArray constructAnArray];

得到的返回类型和方法所在类的类型相同,是NSArray *

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


3:instancetype和id的异同

       相同点:

       都可以作为方法的返回类型

       不同点: 

①:instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • instancetype clang 3.5 提供的关键字, 表示:某方法返回未知类型的OC对象 都知道id任意...
    zfl1024阅读 212评论 0 0
  • 相同点:instanceType和id都是作为方法的返回类型而被使用。 不同点: 1.instancetype可以...
    zero_zql阅读 523评论 0 0
  • instancetype 是只能作为返回值而不能作为参数的。当一个类返回相同类的实例的时候使用 instance...
    齐滇大圣阅读 459评论 1 1
  • 相同点 都可以作为方法的返回类型,表示某个方法返回的未知类型的Objective-C对象。 不同点 1.insta...
    阳光的影子v阅读 277评论 0 1
  • 一直以为到本命年了,实际上却只有二十三,足够证明此刻的生活终究还是烦恼多过快活,毕竟能使人忘却时间的应该都是烦恼,...
    安琪qiqi阅读 178评论 0 0