類別
@inte***ce classname (categoryname )
// methoddeclarations
@end
注意事項
1:類別是類的擴充套件,只可以宣告方法,不可以宣告變數。並且,類別的方法優先順序較高,可覆蓋原類方法。
2:類別的方法中,不可以呼叫super方法。--類別的侷限
3:category 方法不能覆蓋於同一class 的其它 category中的方法。因為不法預知他們的載入優先順序,就可能在編譯時出錯。
使用類別:
1。對框架提供類的擴充套件(沒有原始碼,不能修改)。
2。 不想生成乙個新的子類的情況下,比如對nsarray 的擴充套件。
3。方便做專案管理,可以將乙份原始碼在多個地方共享或者做方法版本管理、多人協作開發、用本地版本替換公共版本實現。
擴充套件:
1:某些情況下,我們需要宣告乙個@property,它對外是唯讀的(readonly),而對內是可讀寫的(readwrite),這時,可以通過extensions實現
// .h
@inte***ce baseclass : nsobject
@property (readonly) nsstring *privatestring;
@end
// .m
@inte***ce baseclass()
@property (readwrite) nsstring *privatestring;
@end
@implementation baseclass
@synthesize privatestring;
//...
@end
@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 ...