OC類的分類和類的載入過程

2021-06-29 16:22:26 字數 1921 閱讀 5137

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 在分類方法的實現中可以訪問原來...