【问题标题】:Objective-C protocol static method?Objective-C 协议静态方法?
【发布时间】:2010-03-06 18:35:57
【问题描述】:

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

@protocol Handler
+(NSString*) getValue;
@end

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

[handlerInstance getValue];

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

[[handlerInstance class] getValue];

【问题讨论】:

    标签: objective-c static protocols


    【解决方案1】:
    [[handlerInstance class] getValue];
    

    是的,像这样。

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

    【讨论】:

    • 说真的,我想我不应该再猜到自己!
    • 不是我们所有人。在发布之前尝试它不会给其他人带来知识的好处。我来这里是为了寻找它的行为方式,因为 1.) 它比尝试它更快 2.) 如果有我没有想到的陷阱,有人可能会在这里注意到它们。因此,先发帖对于后来的每个人来说都是更少的工作。感谢 Kenny 和 Zenox。
    • 所以如果我有一个变量 id<Handler> handler 我应该分配 instance 还是 [instance class] ?即使没有可用的实例,这也能工作吗? (只有Class)?
    • @chakrit:[[instance class] getValue]。如果您有Class cls,请使用[cls getValue]。请注意,如果handler == nil,此方法将不会执行。
    • 一般来说,类方法的重点是不使用实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2023-03-13
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多