iOS 開發:類方法、對象方法介紹及區別

本文首發於我的個人博客:『不羈閣』 https://bujige.net
文章鏈接:https://bujige.net/blog/iOS-Methods.html

Objective-C中的方法有兩種:類方法和對象方法(也叫作實例方法)。

1. 對象方法

1. 對象方法解釋

對象方法以-開頭,屬於類的某一個或某幾個實例對象。對象方法是類對象必須進行實例化後纔可以使用的方法,對象方法將消息發送給實例對象。

2. 對象方法聲明

  • 格式
 
1877784-8a598eb2d1a7cab5.png
 
  • 特徵

    • 對象方法以-開頭如 -(void)xx;

    • 對象方法只能由對象來調用

    • 對象方法中可以訪問當前對象的成員變量

    • 調用格式 [對象名 對象方法名];

  • 示例


//聲明沒有返回值的方法

- (void)method;

//聲明有返回值的方法

- (int)method;

//聲明有返回值有參數的方法

- (int)method: (int)var;

//聲明有返回值有多個參數的方法

- (int)method: (int)var1 andVar2: (int)var2;

3. 對象方法實現

  • 必須寫在以@implementation開頭,@end之間

  • 在聲明的後面加上{}即表示實現

  • 將需要實現的代碼寫在{}中

2. 類方法

1. 類方法解釋

+開頭的方法是類方法。它是屬於類本身的方法,不屬於類的某一個實例對象,不需要實例化類,用類名即可使用,通過類方法將消息發送給類。

2. 類方法聲明

  • 格式

    • 將對象方法-號變爲+號
  • 特徵

    • 類方法以+開頭 如+(void)put;

    • 類方法只能由類來調用

    • 類方法中不能訪問實例(成員)變量,因爲類方法由類來調用,並沒有創建存儲空間來存儲類中的成員變量。

  • 類方法的好處:

    • 不依賴於對象,執行效率更高;

    • 能用類方法解決的問題,儘量使用類方法;

  • 類方法的場合:

    • 當方法內部不需要使用到成員變量時,可以改爲類方法

    • 類方法一般用於編寫工具方法

  • 示例


//聲明沒有返回值的類方法

+ (void)method;

//聲明有返回值的類方法

+ (int)method;

//聲明有返回值有參數的類方法

+ (int)method: (int)var;

//聲明有返回值有多個參數的類方法

+ (int)method: (int)var1 andVar2: (int)var2;

3. 類方法實現

  • 必須寫在以@implementation開頭,@end之間

  • 在聲明的後面加上{}即表示實現

  • 將需要實現的代碼寫在{}中

3.對象方法和類方法區別

  • 對象方法

    • 對象方法是屬於對象的

    • 以減號-開頭

    • 只能讓對象調用,沒有對象,這個方法根本不可能被執行

    • 對象方法能訪問實例變量(成員變量)

    • 對象方法中可以調用當前對象的對象方法

    • 對象方法中可以調用其他對象的對象方法

    • 對象方法中不可以調用類方法

  • 類方法

    • 類方法是屬於類的

    • 以加號+開頭

    • 只能用類名調用,對象不能調用

    • 類方法中不能直接訪問實例變量(成員變量)

    • 類方法中不能直接調用對象方法,要想調用對象方法,必須創建或傳入對象。

  • 使用場合:

    • 當不需要訪問成員變量的時候,儘量用類方法
  • 類方法和對象方法可以同名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章