OC分類和協議

2021-06-27 17:57:48 字數 1719 閱讀 1603

分類:

分類是給原有的類擴充一系列的方法,在不改變源**的情況下給類新增 方法的簡便方法,無需建立子類。

分類的一些注意事項:

1,分類不能新增成員變數,自能訪問原始類的成員變數

2,分類可以重寫原類的方法,但是這樣做會導致原類的方法不能再使用

3,可以建立多個分類

4,分類宣告的方法不必全都實現

5,通過分類新增方法會影響原類和其子類

原類:

#import @inte***ce fraction : nsobject

- (void)setto:(int)a andover:(int)b;

@end

通過分類的方法給fraction新增加減乘除四個函式

#import //這裡既有對分類介面部分的定義,也有對現有介面的擴充套件,所以必須包含#import "foundation"

#import "foundation"

//分類名稱mathops

@inte***ce fraction (mathops)

- (fraction *)add:(fraction *)f;

- (fraction *)sub:(fraction *)f;

- (fraction *)mul:(fraction *)f;

- (fraction *)div:(fraction *)f;

@end

協議:協議的宣告類似於介面的宣告,協議沒有父類,不能自定義成員變數

乙個協議的宣告

@protocol myprotocol - (void)myprotocolmethod;

@end

協議是多個類共享的乙個方法列表,協議中宣告的方法都不用實現,

如果乙個類要採用這個協議,那麼必須實現,- (voidmyprotocolmethod方法

乙個類採用的協議

@inte***ce fraction : nsobject

如果採用多個協議

@inte***ce fraction : nsobject
注意:

1,如果乙個類遵守了某個協議,那麼它的子類也遵守這個協議

2,任何類都可以遵守某個協議

3,通過在型別名稱之後的尖括號中新增協議名稱,可以借助編譯器的幫助來檢查變數的一致性

id currentobject;

這是告訴編譯器currentobject將包含遵守drawingprotocol協議的物件。如果向currentobject指派靜態型別的對想愛你個,這個物件不遵守drawingprotocol協議,編譯器將給出warning。

4,如果這個變數儲存的物件遵守多個協議,則可以列出多項協議,如下

id drawingprotocol1l> currentobject;

5,定義一項協議時,可以擴充套件現有的協議的定義,一下

@protocol drawing3d

說明drawing3d協議也採用了drawing,因此採用drawing3d協議的類都必須實現此協議流出的方法以及drawing協議的方法

6,分類也可以採用乙個協議

@inte***ce fraction(stuff)

此處,fraction擁有乙個分類stuff,這個分類採用了nscoping和nscoding協議

OC中的分類和協議

oc中經常使用分類和協議,分類和協議在專案後期可能會經常用到,尤其是為某個已經成熟的模組新增功能的時候。因為 1 使用分類 category 可以以模組的方式向類新增方法 2 建立標準化的方法類表供其他人實現 下面將對分類和協議做乙個詳細介紹。一 分類 使用場景 1 有時候在處理類定義時,可能想要為...

OC語言BLOCK和協議

oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block變數...

OC語言BLOCK和協議

oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block 變...