iOS - instancetype和id的区别

2018-01-25  本文已影响0人  懒懒的程序员

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那样作为参数。

上一篇 下一篇

猜你喜欢

热点阅读