OC學習筆記之分類

2021-07-04 01:23:07 字數 1835 閱讀 8399

分類(category)的作用

在不修改原有的類的基礎上增加新的方法

乙個龐大的類可以分模組開發

乙個龐大的類可以有多個人來編寫,更有利於團隊合作

使用分類的目的

1. 對現有的類進行擴充套件。

比如可以擴充套件cocoa touch框架中的類,這些新增加的類跟框架中的類沒有區別。

2.作為子類的替代手段

不需要定義和使用乙個子類,你可以通過類別直接向已有的類裡增加方法

3.對類中的方法進行歸類

利用category把乙個龐大的類劃分為小塊來分別進行開發,從而更好的對類中的方法進行更新和維護。

使用分類的步驟

宣告分類------------>實現分類----------->使用分類

分類不能繼承父類的方法

分類的宣告和實現,及分類的使用

1.宣告

格式:@inte***ce 待擴充套件的類名 (分類的名稱)

@end

例如:@inte***ce person :nsobject

@end

@inte***ce person (base)//給person類增加方法

-(void)run;

-(void)eat;

@end

2.實現

格式:    

@implementation 待擴充套件的類 (分類的名稱)

@en待

實現:@implementation person (base)

-(void)run

-(void)eat

@end

3.使用 

person *p = [person new];

[p run];

[p eat];

分類(category)的使用座椅事項

1.分類的使用注意事項

(1)分類只能增加方法,不能增加成員變數(宣告的時候不能夠宣告例項變數)

如果使用@property宣告的話,例如@property int ***;使用@property關鍵字的時候

編譯會通過,但是執行的時候會出錯。

(2)可以在分類中可以訪問原有類的成員變數

(3)如果分類和原來的類中存在相同名稱的方法的話,那麼優先使用分類中的方法 

注:類和分類在同乙個原始檔中 

(4)當多個類別中存在相同的方法的時候,程式執行時最後編譯的的原始檔中的方法會被執行

修改編譯順序

分類(category)的非正式協議

所謂的非正式協議就是類別,這些類別是給nsobjectl或者foundation框架中提供的

其子類增加新的方法,這些新方法所屬的分類就是分正式協議。

但是一般這些非正式協議不建議給nsobject。

unichar ch = [characteratindex:0]//characteratindex方法是去當前位置的字元,返回型別是unichar型別。

分類(category)的延展

1.延展的概念和形式

延展類別又稱為擴充套件(延展,延展類別,擴充套件)-----------extendsion是乙個特例。形式體現:

@inte***ce myclass ()

-(void)setvalue:(float)newvalue;

@end

2.延展的實現

@inte***ce person

@end

@inte***ce person ()

-(void)run;//相對私有的方法,方法宣告的時候在延展分類中宣告,但是方法實現的時候要通過源類宣告

@end

@implementation

-(void)run

@end

Mysql 索引學習筆記之分類

3 索引語法 4 索引設計原則 5 索引的使用 btree 索引 最常見的索引型別,大部分索引都支援 b 樹索引。hash 索引 只有memory引擎支援 使用場景簡單 r tree 索引 空間索引 空間索引是myisam引擎的乙個特殊索引型別,主要用於地理空間資料型別,通常使用較少,不做特別介紹。...

Kaggle學習筆記之分類變數

kaggle intermediate machine learning 分類變數 分類變數一般只有幾個固定的非數值取值,未經預處理直接使用機器學習模型處理大多數會報錯。目錄結果分析 刪除分類變數 只適用於不包含有用資訊的列 序號編碼 ordinal encoding 用不同的序號來表示不同的值,維...

機器學習之分類模型

iris 鳶尾花資料集是乙個經典資料集,在統計學習和機器學習領域都經常被用作示例。資料集內包含 3 類共 150 條記錄,每類各 50 個資料,每條記錄都有 4 項特徵 花萼長度 花萼寬度 花瓣長度 花瓣寬度,可以通過這4個特徵 鳶尾花卉屬於 iris setosa,iris versicolour...