如何在目标C中的类方法上使用self

时间:2017-05-19 18:43:10

标签: objective-c cordova phonegap

我正在尝试制作一个自定义的Cordova插件,我想在Objective-C中创建一个调用javascript函数alert('text')的方法;

这就是我通常的做法,而且运作良好。

- (void)myMethod:(CDVInvokedUrlCommand*)command
{
    [self.commandDelegate evalJs:@"alert('text');"];
}

问题是我需要使用类方法做同样的事情。如果我将 - 更改为+,则会收到错误消息。

+ (void)myMethod:(CDVInvokedUrlCommand*)command
{
    [self.commandDelegate evalJs:@"alert('text');"];
}

1 个答案:

答案 0 :(得分:1)

想一想;一个实例就像汽车一样,这个类就像制造汽车的工厂一样。

每辆车都有不同的驾驶员(代表),但工厂无法访问每辆车的驾驶员,除非他们专门设计了一种获取通道的方式(例如,通过On-Star)。

所以,这是你的问题。您正尝试从实例的范围之外访问实例状态。在类方法中,self引用类,而不是任何特定实例。

解决方案可以是其中之一。你可以使用 singleton ;例如,在程序中全局使用的该类的单个实例。