我使用过几种不同的语言,例如Java,C#和Objective-C。在大多数语言中,不需要对象实例的方法称为静态方法。但是,涉及到Objective-C时,有些人在调用静态方法时会感到防御,他们希望您将其称为类方法。为什么将它们称为类方法而不是静态方法?静态方法和类方法有什么区别?
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
尽管实际上大多数时候类方法和静态方法是相同的,但是它们是不同的。使用静态方法,该类充当名称空间限定符。对于类方法,类本身是一个对象,因此类方法对于类对象而言与实例方法对实例的作用完全相同。因此,您可以执行以下操作
@interface TestClass : NSObject
+ (void)classOrInstanceMethod;
- (void)classOrInstanceMethod;
@end
...
NSArray * arr = [NSArray arrayWithObjects:
[[[TestClass alloc] init] autorelease],
[TestClass class],
nil];
for( id obj in arr )
[obj classOrInstanceMethod];
调用哪个版本的classOrInstanceMethod取决于obj是类对象还是and实例。如果您熟悉工厂类模式,则此模式是Objective-C语言的一部分。
- 3 回答
- 0 关注
- 1430 浏览
添加回答
举报
0/150
提交
取消