本文首發於我的個人博客:『不羈閣』 https://bujige.net
文章鏈接:https://bujige.net/blog/iOS-Methods.html
Objective-C中的方法有兩種:類方法和對象方法(也叫作實例方法)。
1. 對象方法
1. 對象方法解釋
對象方法以-
開頭,屬於類的某一個或某幾個實例對象。對象方法是類對象必須進行實例化後纔可以使用的方法,對象方法將消息發送給實例對象。
2. 對象方法聲明
- 格式
-
特徵
-
對象方法以-開頭如 -(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.對象方法和類方法區別
-
對象方法
-
對象方法是屬於對象的
-
以減號-開頭
-
只能讓對象調用,沒有對象,這個方法根本不可能被執行
-
對象方法能訪問實例變量(成員變量)
-
對象方法中可以調用當前對象的對象方法
-
對象方法中可以調用其他對象的對象方法
-
對象方法中不可以調用類方法
-
-
類方法
-
類方法是屬於類的
-
以加號+開頭
-
只能用類名調用,對象不能調用
-
類方法中不能直接訪問實例變量(成員變量)
-
類方法中不能直接調用對象方法,要想調用對象方法,必須創建或傳入對象。
-
-
使用場合:
- 當不需要訪問成員變量的時候,儘量用類方法
-
類方法和對象方法可以同名