Objective c類別 技術成長筆記 新浪部落格

2021-10-10 12:27:29 字數 1668 閱讀 3171

類別

類別要解決的問題是:為現有的類增加新行為

子類是一種辦法,但是面對類簇和工具包或類庫時確無能為力

類別解決了這個問題

12.1 建立類別

類別是一種為現有類提供新方法的方式

12.1.1 宣告類別

@inte***ce nsstring (numberconvenience)

-(nsnumber *) lengthasnumber;

@end

注意幾點:

1.現有類的類名位於 @inte***ce之後

2.括號中是類別的名稱(只要名稱唯一,可以新增任意多的類別)

3.類別沒有例項變數部分

12.1.2 實現類別

同實現類相似,實現方法即可

12.1.3 類別的侷限性

1.類別不能新增新的例項變數

2.命名衝突,如果類別中方法和類中已有方法同名,則類別具有更高優先順序

12.1.4 類別的作用

1.將類的實現分散到多個不同檔案或多個不同框架中

2.建立私有方法的前向引用

3.向物件新增非正式協議

12.2 利用類別分散實現

利用類別可以將類的方法分散到多個原始檔中

特別指出的是:類別可以訪問其繼承的類的例項變數

在使用乙個方法時,物件的方法是在介面中宣告、父類中宣告、還是類別中宣告並不重要

類別不僅可以分散實現到不同原始檔,也可跨框架

12.3 使用類別建立前向引用

雖然可以實現未宣告的方法,但是編譯器會提出警告

通過類別可以提供宣告,而且,宣告的方法不必要一定在類別的實現中實現,也可以在類的實現中實現

12.4 非正式協議和委託類別

委託(delegage)是一種物件,另乙個類的物件會要求委託物件執行它的某些操作

委託物件接受其它物件對它的特定方法的呼叫

其實就是委託物件必須實現別的物件呼叫的方法,與介面類似

12.4.1 itunesfinder專案

12.4.2 委託和類別

委託和類別有什麼關係?委託強調類別的另一種應用:被傳送給委託物件的方法可以宣告為乙個nsobject的類別

建立乙個nsobject的類別稱為「建立乙個非正式協議」

12.4.3 響應選擇器

選擇器只是乙個方法名稱,可以使用@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 優點 可以把類的實現放在不同的檔案中,減小檔案的大小。缺...