OC語言類的深入和分類

2021-06-26 03:27:06 字數 2574 閱讀 6039

oc語言類的深入和分類

一、分類

(一)分類的基本知識

概念:category  

分類是oc

特有的語言,依賴於類。

分類的作用:在不改變原來的類內容的基礎上,為類增加一些方法。

新增乙個分類:

檔案結構圖:

在分類中新增乙個方法

study方法的實現

測試程式:

(二)分類的使用注意

(1)分類只能增加方法(包括類方法和物件方法),不能增加成員變數

(2)在分類方法的實現中可以訪問原來類中的成員變數;

(3)分類中可以重新實現原來類中的方法,但是會覆蓋掉原來的方法,導致原來的方法無法再使用(警告);

(4)方法呼叫的優先順序:分類->

原來的類

->

父類,若包含有多個分類,則最後參與編譯的分類優先;

(5)在很多的情況下,往往是給系統自帶的類新增分類,如nsobject

和nsstring

,因為有的時候,系統類可能並不能滿足我們的要求。

(6)在大規模的應用中,通常把相應的功能寫成乙個分類,可以有無限個分類,對原有類進行擴充,一般分模組寫,乙個模組乙個分類。

(三)分類程式設計練習

(1)給nsstring

類增加乙個類方法,計算某個字串物件中阿拉伯數字的個數;

(2)給nsstring

類增加乙個物件方法,計算當前字串物件中阿拉伯數字的個數;

分類中方法的宣告

分類中方法的實現

測試程式:

二、類的深入研究

(一)類的本質

類本身也是乙個物件,是class

型別的物件,簡稱「類物件」。

class型別的定義:

typedef struct obj class *class;

類名就代表著類物件,每個類只有乙個類物件。

利用class 

建立 person

類利用person 

建立person

型別的物件

person *p=[[person alloc] init];

獲取記憶體中的類物件有兩種方法:

(1)class c=[p claa];//指向類的物件的指標呼叫

class

方法(2)class c1=[person class];//使用類名呼叫

class

方法注意:c和

c1列印出來的位址相同,

class c2=[p claa];

可以證明所有的物件共用乙個類方法。

(二)類的載入和初始化

測試程式:

1.當程式啟動時,就會載入專案中所有的類和分類,而且載入後會呼叫每個類和分類的+load

方法,只會呼叫一次;

2.當第一次使用某個類時,就會呼叫當前類的+initialize

方法;3.先載入父類,再載入子類(先呼叫父類的+load

方法,再呼叫子類的

+load

方法,最後呼叫分類的+load

方法),先初始化父類,再初始化子類(先呼叫父類的+initialize

方法,再呼叫子類的

+initialize

方法)。

4.注意:在初始化的時候,如果在分類中重寫了+initialize

方法,則會覆蓋掉父類的。

5.重寫+initialize

方法可以監聽類的使用情況。

OC語言類的深入和分類

感謝 oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包...

OC語言類的深入和分類

oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包括類方...

OC語言類的深入和分類

oc語言類的深入和分類 一 分類 一 分類的基本知識 概念 category 分類是oc特有的語言,依賴於類。分類的作用 在不改變原來的類內容的基礎上,為類增加一些方法。新增乙個分類 檔案結構圖 在分類中新增乙個方法 study方法的實現 測試程式 二 分類的使用注意 1 分類只能增加方法 包括類方...