ios 類別和擴充套件

2021-06-26 08:28:16 字數 1253 閱讀 2423

類別@inte***ce classname (categoryname )

// methoddeclarations

@end

注意事項

1:類別是類的擴充套件,只可以宣告方法,不可以宣告變數。並且,類別的方法優先順序較高,可覆蓋原類方法。

2:類別的方法中,不可以呼叫super方法。--類別的侷限 

3:category 方法不能覆蓋於同一class 的其它 category中的方法。因為不法預知他們的載入優先順序,就可能在編譯時出錯。

使用類別:

1。對框架提供類的擴充套件(沒有原始碼,不能修改)。

2。 不想生成乙個新的子類的情況下,比如對nsarray 的擴充套件。

3。方便做專案管理,可以將乙份原始碼在多個地方共享或者做方法版本管理、多人協作開發、用本地版本替換公共版本實現。

擴充套件:

1:某些情況下,我們需要宣告乙個@property,它對外是唯讀的(readonly),而對內是可讀寫的(readwrite),這時,可以通過extensions實現

[objc]view plain

copy

print

?// .h

@inte***ce

baseclass : nsobject  

@property

(readonly

) nsstring

*privatestring;  

@end

// .m

@inte***ce

baseclass()  

@property

(readwrite

) nsstring

*privatestring;  

@end

@implementation

baseclass  

@synthesize

privatestring;  

//...

@end

2:使編輯器可以更好的驗證類的私有的方法或者變數

[objc]view plain

copy

print

?@inte***ce

baseclass()  

- (void

)dosomethingprivate;  

@end

@implementation

baseclass  

//...

@end

ios 類別和擴充套件

類別 inte ce classname categoryname methoddeclarations end 注意事項 1 類別是類的擴充套件,只可以宣告方法,不可以宣告變數。並且,類別的方法優先順序較高,可覆蓋原類方法。2 類別的方法中,不可以呼叫super方法。類別的侷限 3 categor...

iOS類別和類擴充套件

在ios中,有一種機制可以使使用者在沒有遠嗎的情況下擴充套件類的功能,但不是通過繼承,這就是類別。ios中沒有類似c 中可以定義私有方法和私有變數的關鍵字,要定義私有方法和私有變數,可以用類擴充套件來實現。類別 類別在不需要繼承的情況下可以擴充套件類的功能。但類別不能新增類的屬性和私有變數。類別可以...

ios 類別和類擴充套件

二兩種字典轉模型的 本文分為兩部分 一 教你怎樣一部獲取成員屬性 通過nsobject autologproperty分類 二 對比kvc和runtime兩種字典轉模型的方法並抽取乙個分類 void createpropertycodewithdict nsdictionary dict else ...