類別
類別要解決的問題是:為現有的類增加新行為12.1 建立類別子類是一種辦法,但是面對類簇和工具包或類庫時確無能為力
類別解決了這個問題
類別是一種為現有類提供新方法的方式12.1.1 宣告類別
@inte***ce nsstring (numberconvenience)12.1.2 實現類別-(nsnumber *) lengthasnumber;
@end
注意幾點:
1.現有類的類名位於 @inte***ce之後
2.括號中是類別的名稱(只要名稱唯一,可以新增任意多的類別)
3.類別沒有例項變數部分
同實現類相似,實現方法即可12.1.3 類別的侷限性
1.類別不能新增新的例項變數12.1.4 類別的作用2.命名衝突,如果類別中方法和類中已有方法同名,則類別具有更高優先順序
1.將類的實現分散到多個不同檔案或多個不同框架中12.2 利用類別分散實現2.建立私有方法的前向引用
3.向物件新增非正式協議
利用類別可以將類的方法分散到多個原始檔中12.3 使用類別建立前向引用特別指出的是:類別可以訪問其繼承的類的例項變數
在使用乙個方法時,物件的方法是在介面中宣告、父類中宣告、還是類別中宣告並不重要
類別不僅可以分散實現到不同原始檔,也可跨框架
雖然可以實現未宣告的方法,但是編譯器會提出警告12.4 非正式協議和委託類別通過類別可以提供宣告,而且,宣告的方法不必要一定在類別的實現中實現,也可以在類的實現中實現
委託(delegage)是一種物件,另乙個類的物件會要求委託物件執行它的某些操作12.4.1 itunesfinder專案委託物件接受其它物件對它的特定方法的呼叫
其實就是委託物件必須實現別的物件呼叫的方法,與介面類似
12.4.2 委託和類別
委託和類別有什麼關係?委託強調類別的另一種應用:被傳送給委託物件的方法可以宣告為乙個nsobject的類別12.4.3 響應選擇器建立乙個nsobject的類別稱為「建立乙個非正式協議」
選擇器只是乙個方法名稱,可以使用@selector()預編譯指令指定選擇器,其中方法名位於圓括號中,但它以oc執行時使用的特殊方式編碼,以快速執行查詢
nsobject提供了乙個respondstoselector的方法,詢問物件以確定其是否實現某個特定訊息12.4.4 選擇器的其他應用
選擇器可以被傳遞,可以作為方法引數,甚至可以作為例項變數儲存
Objective C之 類別小例項
內容大綱 已知乙個字串,要求找出字串中所有的阿拉伯數字並計算其個數 例如 a123sb23r2jsowsalwf 求數字的個數 1 計數器思想,定義乙個變數儲存結果 2 遍歷字串,取出字串中所有的字元1 import23 int getstrcount nsstring str 411 12retu...
Objective C之 類別小例項
內容大綱 已知乙個字串,要求找出字串中所有的阿拉伯數字並計算其個數 例如 a123sb23r2jsowsalwf 求數字的個數 1 計數器思想,定義乙個變數儲存結果 2 遍歷字串,取出字串中所有的字元 1 import23 int getstrcount nsstring str 4 11 12re...
objective c類別和類擴充套件學習筆記
類別是對已經存在的類的一種擴充套件方式。可以為其新增新的方法和屬性,但是不能新增新的例項變數。如果新增例項變數,就會破壞已存在的類原有的結構 命名方式 inte ce nsstring mynsstring void getstrlength 優點 可以把類的實現放在不同的檔案中,減小檔案的大小。缺...