2010-07-14 61 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. 自我类方法代表类本身不过自我在实例方法表示一个类的特定实例。