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