Difference Class and Instance Methods
类方法和实例方法的区别是什么?为什么我们需要分开?有人能解释一下吗?
类和实例方法
?实例响应实例方法
1 2 3
| - (id)init;
- (float)height;
- (void)walk; |
?类响应类方法
1 2 3
| + (id)alloc;
+ (id)person;
+ (Person *)sharedPerson; |
泰穆尔
- Objective-C:Class和Instance方法的可能重复?
实例方法仅在类的实例上可用,而类方法不需要实例,但在类上可用。
类方法用+表示,而实例方法在返回类型之前用-表示。
以NSObject为例。NSObject有一个名为+ (id)alloc的类方法。alloc方法用于分配类的实例。显然,alloc必须是一个类方法,因为如果它是一个实例方法,您将从何处获取"根"实例?
另一方面,- (id)init是一个实例方法,因为它初始化实例的状态。
- 很好的答案,用问题中包含的代码中的一个示例来澄清。如果你问这个班是多高[人高],没有答案,因为一个人可以是任何高度。但是如果你问一个实例,比如说[迈克尔高度],它会做出反应,因为我可以为那个特定的实例(人)设置一个高度。
一个例子:
Human->ClassYou->Instance。
Human可以是extinguish,You不能。You可以是drink a Coke,Human不能。
Instance方法只适用于个人。
而对于具有相同可识别特征的整个群体,则采用Class方法。
它是一个和多个,个体和整个社会的区别。
[SomeClass alloc]意味着这个阶级的一个新实例诞生了。就像你出生一样,
init适用于Instance,就像你的父母给你一个名字,喂你,送你上学一样,所以你有能力生活在这个社会中。
使用静态变量
用"+"符号表示
可以直接用类调用,而不创建类的实例
Self-in-Class方法表示类本身,而Self-in-Instance方法表示类的特定实例。