2010-07-14 54 views
4

類方法和實例方法有什麼區別。爲什麼我們需要分開使用它們? 有人可以解釋一下嗎?差異類和實例方法

類和實例方法

•實例與實例方法應對

- (id)init; 
- (float)height; 
- (void)walk; 

•班類方法

+ (id)alloc; 
+ (id)person; 
+ (Person *)sharedPerson; 

迴應泰穆爾

+1

可能重複的[Objective-C:類與實例方法?](http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) – 2010-07-24 04:22:05

回答

6

實例方法僅適用於一個類的實例,而一個類的方法d不需要實例,但可以在課程中使用。

類別方法由+表示,而實例方法在其返回類型之前由-表示。

舉個例子,我們以NSObject爲例。 NSObject有一個名爲+ (id)alloc的類方法。 alloc方法用於分配類的一個實例。很明顯,alloc必須是一個類方法,因爲如果它是一個實例方法,那麼你會從哪裏得到「root」實例?

另一方面- (id)init是一個實例方法,因爲它初始化一個實例的狀態。

+1

好的答案,澄清以問題中包含的代碼爲例。如果你問班級什麼樣的高度[人身高],它不會有答案,因爲一個人可以是任何高度。但是如果你問一個實例說[邁克爾高度],它可以迴應,因爲我可以爲該特定實例(人)設置一個高度。 – mbehan 2010-07-14 10:39:32

5

一個例子:

Human - >Class You - >Instance

Human所能extinguishyou不能。 You可能drink a Coke,Human不能。雖然被施加到整個組具有相同識別的特徵Class方法

Instance方法僅適用於個人,

這是個人與整個社會的差異。

[SomeClass alloc]意味着類的新實例出生 就像你生完孩子,

init適用於Instance,就像你的父母給你的名字,養活你,送你去上學,所以你有能力生活在這個社會。

0
  1. 使用靜態變量
  2. 以「+」符號代表
  3. 可直接與類被稱爲無類的創建實例
  4. 自我類方法代表類本身不過自我在實例方法表示一個類的特定實例。