我创建了一个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为空。为什么呢?
答案 0 :(得分:1)
我认为你混淆了实例变量和静态(类)变量。 extern NSString *lkwid
声明了一个全局可访问的变量。 @property (retain,nonatomic) NSString *lkwid
向对象声明实例变量。如果您希望它设置全局变量,然后由 ALL 实例共享,那么您不应该合成该属性并以下列方式自己实现getter和setter:
- (NSString*) lkwid
{
return lkwid;
}
- (void) setLkwid:(NSString*)value
{
lkwid = value;
}
确保您不要声明名为lkwid
的实例变量。