類方法和實例方法有什麼區別。爲什麼我們需要分開使用它們? 有人可以解釋一下嗎?差異類和實例方法
類和實例方法
•實例與實例方法應對
- (id)init;
- (float)height;
- (void)walk;
•班類方法
+ (id)alloc;
+ (id)person;
+ (Person *)sharedPerson;
迴應泰穆爾
類方法和實例方法有什麼區別。爲什麼我們需要分開使用它們? 有人可以解釋一下嗎?差異類和實例方法
類和實例方法
•實例與實例方法應對
- (id)init;
- (float)height;
- (void)walk;
•班類方法
+ (id)alloc;
+ (id)person;
+ (Person *)sharedPerson;
迴應泰穆爾
實例方法僅適用於一個類的實例,而一個類的方法d不需要實例,但可以在課程中使用。
類別方法由+
表示,而實例方法在其返回類型之前由-
表示。
舉個例子,我們以NSObject
爲例。 NSObject
有一個名爲+ (id)alloc
的類方法。 alloc方法用於分配類的一個實例。很明顯,alloc必須是一個類方法,因爲如果它是一個實例方法,那麼你會從哪裏得到「root」實例?
另一方面- (id)init
是一個實例方法,因爲它初始化一個實例的狀態。
好的答案,澄清以問題中包含的代碼爲例。如果你問班級什麼樣的高度[人身高],它不會有答案,因爲一個人可以是任何高度。但是如果你問一個實例說[邁克爾高度],它可以迴應,因爲我可以爲該特定實例(人)設置一個高度。 – mbehan 2010-07-14 10:39:32
一個例子:
Human
- >Class
You
- >Instance
Human
所能extinguish
,you
不能。 You
可能drink a Coke
,Human
不能。雖然被施加到整個組具有相同識別的特徵Class
方法
Instance
方法僅適用於個人,
。
這是個人與整個社會的差異。
[SomeClass alloc]
意味着類的新實例出生 就像你生完孩子,
init
適用於Instance
,就像你的父母給你的名字,養活你,送你去上學,所以你有能力生活在這個社會。
可能重複的[Objective-C:類與實例方法?](http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) – 2010-07-24 04:22:05