id 与instancetype的区别

2018-04-24  本文已影响0人  蝉始鸣

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

好处:确定对象类型帮编译器更好定位代码问题。

相同点:

作为方法的返回类型

不同点:

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

2、instancetype只能作为返回值,id可以作为参数.

@interface NSObject

+(id)alloc;

-(id)init;

@end

当我们初始化 NSArray时

NSArray*array = [[NSArray alloc] init];

[NSArray alloc]返回类型属于关联返回类型,NSArray *

instancetype

假如一个不是关联返回类型的方法

@interface NSArray

+(id)constructAnArray;

@end

当我们初始化的时候

[NSArray constructAnArray]

得到返回类型和方法声明的返回类型一样,是id

如果使用 instancetype 作为返回类型

@interface NSArray

+(instancetype)constructAnArray;

@end

同样方式初始化

[NSArray constructAnArray]

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

本文转载自 https://www.cnblogs.com/heri/p/4583592.html

上一篇下一篇

猜你喜欢

热点阅读