IOS學習筆記之類別與擴展

1. 類別

(1)為已有的類添加新的方法

(2)可以在類別中添加新屬性,但是不能為類別添加新的實例變量。

(3)缺陷:類別有兩個局限

-1. 無法向類中添加實例變量,類別中沒有空間容納實例變量。

-2. 存在名稱沖突問題,即類別中的實力方法與現有方法重名,類別具有更高優先級,造成方法覆蓋。

(4) 優勢:

-1.可以將類的實現代碼放到不同的文件或框架中,需要的時候引用特定的文件即可。

-2.可以創建對私有方法的前行引用。

注意:

(1)類別的方法不一定非要在@implementation中實現,也可以在其他位置實現,但是當調用Category的方法時,依據繼承樹沒有找到該方法的實現,程序則會崩潰。

(2) 類別理論上不能添加變量,但是可以使用@dynamic來彌補這種不足。


2.擴展

擴展與類別類似,其實就相當與匿名的類別。



類別和擴展的區別

(1)類別無法向類中添加新的實例變量,extension可以添加屬性(變量)。

(2)extension里聲明的方法需要在.m中實現,category不強制要求。

(3)當類別中的方法與原始類方法名稱沖突時,類別具有更高的優先級。類別方法將完全取代初始方法從而無法再使用初始方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容