为了账号安全,请及时绑定邮箱和手机立即绑定

“类方法”和“静态方法”有什么区别?

“类方法”和“静态方法”有什么区别?

FFIVE 2019-10-18 10:59:30
我使用过几种不同的语言,例如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语言的一部分。


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 1362 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信