Objective-C( 文法二)

來源:互聯網
上載者:User

標籤:

 分類(Category):可以給某一個類擴充一些方法(不修改原來類的代碼)

 作用:在不改變原來類內容基礎上,可以為類增加一些方法

 

 使用注意

   1. 只能增加方法,不能增加成員變數

   2. 分類方法實現中可以訪問原來類中的成員變數

   3. 分類可以重新實現原來類中的方法,會覆蓋原來類的方法,導致原來類的方法無法再使用

   4. 分類的優先順序最高:調用一個方法優先去分類中找,再去原來類,然後父類中找

  分類(最後編譯的優先)—》原來類—》父類

  聲明:

 @interface 類名(分類名稱)

 @end

  實現:

 @implementation 類名

 @end

 

類的本質

類本身也是一個對象,是Class類型的對象,簡稱類對象

Class類型的定義

typedef struct objc class *Class

類名代表著類對象,每個類只有一個類對象

 

+load方法和+initialize方法:

1.當程式啟動時,就會附加元件目中所有的類和分類,而且載入後會調用每個類和分類的+load方法。只會調用一次。

2.當第一次使用某個類時,就會調用當前類的+initialize方法,一個類只會調用一次+initialize方法

3.先載入父類,再載入子類(先調用父類的+load方法,再調用子類的+load方法)

   先初始化父類,再初始化子類(先調用父類的+initialize方法,再調用子類的+initialize方法

 

description方法

使用NSLog輸出屬性較多時,修改預設輸出,可重寫+description方法或-desription方法

+description方法:

預設情況下,使用NSLog和%@輸出對象時,調用對象的-desription方法,拿到的傳回值(NSString *)螢幕輸出結果是:<類名:記憶體位址>

+desription方法:

預設情況下,使用NSLog和%@輸出類對象時,調用類對象的+desription方法,拿到的傳回值(NSString *)螢幕輸出

 

注意點:

不要在-desription方法中嘗試使用self,會造成死迴圈

 

NSLog列印

1. %p

   列印指標變數p的地址  

  NSLog(@"%p", &p);

    列印對象地址

      NSLog(@"%p", p);

 

2. %@

  %@ 列印<類名:對象地址> 

  NSLog(@"%@", p);

3.  _LINE_     %d    輸出當前行號

4.  _FILE_      %s    輸出檔案路徑

5.  _func_      %s    輸出當前函數

 

SEL

全稱selector

SEL 其實是對方法的一種封裝,將方法封裝成一個SEL類型的資料,去找對應的方法地址,找到方法地址就可以調用方法

_cmd 代表當前方法

訊息就是SEL

Objective-C( 文法二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.