Objective-C协议静态方法?

Kyl*_*yle 21 static protocols objective-c

我在Objective-C中有一个协议,如下所示:

@protocol Handler
+(NSString*) getValue;
@end
Run Code Online (Sandbox Code Playgroud)

所以现在说我有一个继承这个协议的实例,我想调用这个方法:

[handlerInstance getValue];
Run Code Online (Sandbox Code Playgroud)

这会发出警告,因为该getValue方法不是实例方法.如何从我的实例中正确调用此方法?(不知道具体课程)?我猜是这样的,但我不确定:

[[handlerInstance class] getValue];
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 20

[[handlerInstance class] getValue];
Run Code Online (Sandbox Code Playgroud)

是的,就像这样.

与Java和C++不同,类方法只能发送到类.

  • 不是我们所有人.在发布之前尝试一下并不会给其他人带来知识的好处.我来到这里寻找这样做会如何表现,因为1.)它比尝试它更快2.)如果有一些我没有想到的陷阱,有人可能会在这里注意到它们.因此,首先发布的内容对于后来的每个人来说都不那么有用 谢谢Kenny和Zenox. (4认同)
  • @chakrit:`[[instance class] getValue]`.如果你有一个`Class cls`,那就做`[cls getValue]`.请注意,如果`handler == nil`,则不会执行此方法. (3认同)