如何在 Objective C 中的 Class 方法上使用 self

How To Use self On A Class Method In Objective C

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

我通常就是这样做的,效果很好。

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

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

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

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

每辆汽车都有不同的 driver(代表),但工厂无法访问每辆汽车的 driver,除非他们专门设计了一种获得访问权限的方式(例如,通过 On-Star).


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

解决方案可以是几种之一。您可以使用 单例;例如,在您的程序中全局使用的 class 的单个实例。