如何在 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 的单个实例。
我正在尝试制作一个自定义 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 的单个实例。