1.分類的使用
在開發過程中,如需要給某個類新增一些方法而不改變原來類,可以通過分類來實現,利用分類可以給原有類新增一些後來需要的一些功能,也可以達到共同開發乙個類,實現專案合作。
分類的作用:再不改變原來類的基礎上,可以為類增加一些方法,原來類可以是系統自帶的類
分類的命名規則:可以隨便命名,一般分類名要體現出分類的功能,這樣讓別人易懂。
例如:給類nsstring新增乙個計算字串中阿拉伯數字個數的方法。
1.首先建立乙個分類
2.原類選擇nsstring
3.在分類中寫所需方法
方法的宣告:
#import @inte***ce nsstring (numbercount)
// 所需新增的方法
- (int)numbercountofnsstring;
@end
方法的實現:
#import "nsstring+numbercount.h"
@implementation nsstring (numbercount)
- (int)numbercountofnsstring
}return count;
}@end
main()函式:
int main()
分類使用注意:
1.分類只能增加方法,不能增加成員變數
2.分類方法實現中可以訪問原來類中的宣告的成員變數
3.分類可以重新實現原來類中的方法,但會覆蓋掉原來的方法,會導致原來的方法沒法在使用
4.方法呼叫的優先順序:分類(最後編譯的分類)--->原來類--->父類
2.類的載入過程
類載入的本質
1.當程式啟動時,就會載入專案中所有的類和分類。而且載入後會呼叫每個類 和分類的+loa方法。只會呼叫一次
2.當第一次使用某個類時,就會呼叫當前類的+initialize方法
3.先載入父類,在載入子類(先呼叫父類的+load,在呼叫子類的+load方法)先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法)
建立乙個person類,在建立student類繼承person類,在建立student乙個分類student+study,如:
父類person方法如下:
#import "person.h"
@implementation person
+ (void)load
+(void)initialize
@end
子類和分類一樣寫
輸出結果:
person--load
student--load
分類--load
可以看出,最先載入父類,其次載入子類,最後載入子類的分類。
當初始化父類物件時:
int main()
輸出結果;
person--load
student--load
分類--load
person--initialize
子類和子類分類沒有初始化
當初始化子類時:
int main()
輸出結果:
person--load
student--load
分類--load
person--initialize
分類--initialize
父類先初始化,其次分類初始化 OC語言類的深入和分類
oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc 特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包括類...
OC語言類的深入和分類
感謝 oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包...
OC語言類的本質和分類
oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 二 分類的使用注意 1 分類只能增加方法 包括類方法和物件方法 不能增加成員變數 2 在分類方法的實現中可以訪問原來...