一、分類的使用注意事項:
1围肥、分類只能增加方法絮记,不能增加成員變量。
????原因:
????Category是運行時決議虐先,因為在運行時,對象的內存布局已經確定派敷,如果添加成員變量會破壞類的內部布局蛹批,這對編譯性語言是災難性的。
2篮愉、分類中寫property腐芍,只會生成方法聲明。
3试躏、分類可以訪問成員變量猪勇。
3、如果分類和類出現(xiàn)同名方法颠蕴,優(yōu)先調用分類中的方法泣刹,原類中的方法則會被忽視。
4犀被、多個分類中有同名方法,則執(zhí)行最后編譯的文件方法(注意開發(fā)中千萬不要這么干)椅您。
5、方法調用的優(yōu)先級(從高到低)寡键。
5掀泳、1、分類(最后參與編譯的分類優(yōu)先)-->原來類-->父類。
5员舵、2脑沿、先加載原類的+load方法,再加載分類的+load方法马僻,若多個分類庄拇,則根據編譯順序加載。
二巫玻、Extension
1丛忆、Extension是類的一部分,和類同時產生仍秤、同時消亡熄诡。
2、Extension可以為類添加私有變量诗力、私有方法(相對凰浮,可以通過KVC修改變量,通過Runtime調用方法)苇本。
????你必須有一個類的源碼才能添加一個類的Extension袜茧,所以對于系統(tǒng)一些類,如NSString瓣窄,就無法添加類擴展
3笛厦、Extension是編譯期決議。
是類的一部分俺夕,和類同時產生裳凸、同時消亡。
和頭文件的@interface和實現(xiàn)文件里的@implement一起形成了一個完整的類劝贸。