在網上看了很多關於分類(Category)和擴展(Extension)的解釋,通過研究和分析,把網上大神們的回答
說成大白話,希望能幫助到跟我有相同困惑的同學;
先把大神的解釋拋出:
- category和extension用來做類擴展的,可以對現有類擴展功能或者修改其功能。
- 在iOS中category應用是非常廣泛的,系統自帶的很多類都有多個category擴展功能。
- 一般category中可以定義新的方法、重寫類原來的方法和添加readonly屬性
- 而extension可以認爲是匿名的category,但是這個extension相對於category有有一個特殊功能:
- 在extension中可以定義可寫的屬性,公有可讀、私有可寫的屬性(Publicly-Readable, Privately-Writeable Properties)一般這樣實現!
下面是大白話:
分類:
不能添加新的實例變量,只能聲明新的方法;
分類中聲明的方法,主類可直接調用;
分類繼承了主類的方法和屬性。
在系統調用時,先引入分類頭文件的前提下,父類具有分類的屬性及分類的方法。並且可以在主程序中使用分類;
擴展:
定義擴展有兩種方式:1、單獨創建擴展文件;2、將擴展的內容,直接寫在父類的 .m文件@interface前面;
擴展所屬的主文件的.m文件中實現方法的函數體。該方法在類外是不能被調用的
在擴展中定義的實例變量、屬性和方法都是私有的,只能被擴展所屬的主類中的方法使用