類擴展 (Class Extension也有人稱爲匿名分類)
- 作用
能爲某個類附加額外的屬性,成員變量,方法聲明
一般的類擴展寫到.m文件中
一般的私有屬性寫到類擴展
- 使用格式:
@interface Mitchell()
//屬性
//方法
@end
- 分類的區別
分類的小括號中必須有名字
@interface 類名(分類名字)
/*方法聲明*/
@end
@implementation類名(分類名字)
/*方法實現*/
@end
分類只能擴充方法,不能擴展屬性和成員變量(如果包含成員變量會直接報錯)。
如果分類中聲明瞭一個屬性,那麼分類只會生成這個屬性的set、get方法聲明,也就是不會有實現。
舉例說明:如果我們分別在,類擴展與分類中添加了兩個屬性,
分類:
@interface UIButton (DelayControl)
/**
* 需要延遲的時間
*/
@property(nonatomic, assign) NSTimeInterval delayTimeInterval;
@end
類拓展
@interface UIButton ()
/**
* 需要延遲的時間
*/
@property(nonatomic, assign) NSTimeInterval delayTimeInterval;
@end
注意:
雖然我們再類別中聲明屬性不會報錯,但是@property並沒有自動爲我們設置的屬性生成set、get方法。
如果想要實現則需要使用到運行時中屬性的動態掛載
本文轉自:iOS - 類擴展與分類的區別