+ (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)allocWithZone:(struct _NSZone *)zone OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)alloc OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
- (void)dealloc OBJC_SWIFT_UNAVAILABLE("use 'deinit' to define a de-initializer");
- (void)finalize OBJC_DEPRECATED("Objective-C garbage collection is no longer supported");
- (id)copy;
- (id)mutableCopy;
上述代碼塊中,返回類型分為 instancetype和id兩種污它,各在何種情況下使用呢驯用?
instancetype 關(guān)聯(lián)返回類型
id非關(guān)聯(lián)返回類型
1、關(guān)聯(lián)返回類型
(1)類方法中骂删,以alloc或new開頭
(2)實例方法中掌动,以autorelease,init或self開頭
會返回一個方法所在類的類型對象,這些方法就被稱為是關(guān)聯(lián)返回類型的方法宁玫。換句話說粗恢,這些方法的返回結(jié)果以方法所在的類為類型。如上述代碼
2欧瘪、非關(guān)聯(lián)返回類型
@interface NSArray
+ (id)constructAnArray;
@end
根據(jù)cocoa命名規(guī)范眷射,得到的返回類型和方法聲明的返回類型一樣,是id.