iOS - 類擴展與分類的區別

類擴展 (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 - 類擴展與分類的區別

發佈了98 篇原創文章 · 獲贊 3 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章