李洪強iOS開發之OC語言類的深入和分類

2021-09-08 18:43:57 字數 2396 閱讀 4231

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方法

(二)類的載入和初始化

測試程式:

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

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

3.先載入父類,再載入子類(先呼叫父類的+load方法,再呼叫子類的+load方法,最後呼叫分類的+load方法),先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法)。

4.注意:在初始化的時候,如果在分類中重寫了+initialize方法,則會覆蓋掉父類的。

5.重寫+initialize方法可以監聽類的使用情況。

李洪強iOS開發之Foundation框架 結構體

foundation框架 結構體 一 基本知識 foundation 基礎框架。框架中包含了很多開發中常用的資料型別,如結構體,列舉,類等,是其他ios框架的基礎。如果要想使用foundation框架中的資料型別,那麼包含它的主標頭檔案就可以了。即 import 補充 core foundation...

李洪強iOS開發之 PCH檔案的配置

pch 可以用來儲存共享資訊,比如裝置螢幕的寬度,高度。版本號等等 公用資訊 xcode 老版本會自動為我們建立pc 件,新版本開始不自動建立了,如果需要使用可以自己手動建立 建立完成後可以在裡面定義常量 此處以螢幕尺寸為例 如下 分割線 分割線 分割線 分割線 分割線 分割線 如下 獲取螢幕 寬度...

李洪強漫談iOS開發 C語言 053 小結

已經學習過的c語言語法 01 基本c程式結構 int main void int main int argc,char arv 02 基本語句 輸入輸出 基本標頭檔案 include printf scanf getchar 返回緩衝區中的乙個字元的ascii碼 ch getchar n 03 變數...