0

我创建了一个 phonegap 插件来为本地代码提供一个变量。这很好用。现在我需要从其他类访问这个值,所以我决定创建一个 extern NSString。

。H

extern NSString  *lkwid;

@interface MyPlugin : CDVPlugin {

}

@property (retain, nonatomic) NSString *lkwid;    
-(void) setMyValue:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

.m

#import "MyPlugin.h"

@implementation MyPlugin

@synthesize lkwid;

NSString *lkwid = @"";


-(void) setMyValue:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
    NSString* callbackId = [arguments objectAtIndex:1];
    lkwid = callbackId;
    NSLog(@"set value %@ ",lkwid);
    //NSLog shows the correct value from Javascript
}

现在我想lkwid从 MainViewController.m 访问(MyPlugin.h 已导入)但 lkwid 为空。为什么?

4

1 回答 1

1

我认为您混淆了实例变量和静态(类)变量。extern NSString *lkwid声明了一个全局可访问的变量。@property (retain,nonatomic) NSString *lkwid为您的对象声明一个实例变量。如果您希望它设置全局变量,然后由所有实例共享,那么您不应该合成属性并以下列方式自己实现 getter 和 setter:

- (NSString*) lkwid
{
    return lkwid;
}

- (void) setLkwid:(NSString*)value
{
    lkwid = value;
}

确保你没有同时声明一个名为 name 的实例变量lkwid

于 2013-05-02T17:36:38.747 回答