instancetype的作用,就是使那些非關(guān)聯(lián)返回類型的方法返回所在類的類型!
好處:確定對(duì)象類型幫編譯器更好定位代碼問(wèn)題。
相同點(diǎn):
作為方法的返回類型
不同點(diǎn):
1、instancetype 可以返回和方法所在類相同類型的對(duì)象,id只能返回未知類型的對(duì)象。
2、instancetype只能作為返回值,id可以作為參數(shù).
例
@interface NSObject
+(id)alloc;
-(id)init;
@end
當(dāng)我們初始化 NSArray時(shí)
NSArray*array = [[NSArray alloc] init];
[NSArray alloc]返回類型屬于關(guān)聯(lián)返回類型,NSArray *
instancetype
假如一個(gè)不是關(guān)聯(lián)返回類型的方法
@interface NSArray
+(id)constructAnArray;
@end
當(dāng)我們初始化的時(shí)候
[NSArray constructAnArray]
得到返回類型和方法聲明的返回類型一樣,是id
如果使用 instancetype 作為返回類型
@interface NSArray
+(instancetype)constructAnArray;
@end
同樣方式初始化
[NSArray constructAnArray]
得到的返回類型和方法所在類型相同,是 NSArray *
本文轉(zhuǎn)載自?https://www.cnblogs.com/heri/p/4583592.html