无法从另一个类访问extern变量

时间:2013-05-02 16:35:31

标签: objective-c phonegap-plugins

我创建了一个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
}

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

1 个答案:

答案 0 :(得分:1)

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

- (NSString*) lkwid
{
    return lkwid;
}

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

确保您不要声明名为lkwid的实例变量。