分類(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...