1.Gategory(分類、類别):是不改變原類的基礎上,給類添加新的方法。
作用:1⃣可以講一個龐大的類分子產品開發
2⃣對現有類進行方法的擴充
3⃣對類中的方法有歸檔類的作用。
注意事項:
1⃣分類中隻能增加方法,不能在類中增減執行個體變量
2⃣分類和原類中的方法名具有相同的方法名,優先執行分類中方法。
3⃣如果有多個分類也有相同方法名,這時會根據編譯最後的分類中的方法執行。
4⃣分類的方法中,可以使用執行個體變量。
5⃣在分類中可以聲明@proprey參數,但是編譯的時候會報錯。
定義方式:
在.h檔案中
@interface 類名 (分類名)
//聲明方法
@end
在. m檔案中
@implementtation 類名 (分類名)
//實作相應的方法
@end
2.非正式協定
非正式協定是一個特别的分類,它是給NSSobject類或者Foundation增加方法的分類,在分類中指聲明方法,在子類中具體實作方法。
3.類擴充
類擴充(Class Extendsion)是一個特别的分類,又稱匿名類,它是一個沒有名字的分類。
類擴充特點:
1⃣我們不需要指定它的名字
2⃣可以在源代碼的類中使用,在ui編寫代碼中在 .m檔案中寫。
3⃣可以建立它的數量不限,而且在類擴充中可以添加執行個體變量并能修改隻讀屬性改為讀寫屬性。
4. 分類 和 類擴充的差別
分類需要名字、不可以有執行個體變量。
類擴充不要名字,可以在源代碼的類中,修改隻讀屬性為讀寫屬性、可以使用執行個體變量。