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
}

lkwidMainViewController.m (MyPlugin.h をインポート) からアクセスしたいのですが、lkwid が空です。なんで?

4

1 に答える 1

1

インスタンス変数と静的(クラス)変数を混同していると思います。extern NSString *lkwidグローバルにアクセス可能な変数を宣言します。@property (retain,nonatomic) NSString *lkwidオブジェクトにインスタンス変数を宣言します。すべてのインスタンスで共有されるグローバル変数を設定する場合は、プロパティを合成せず、次の方法でゲッターとセッターを自分で実装する必要があります。

- (NSString*) lkwid
{
    return lkwid;
}

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

という名前のインスタンス変数も宣言しないように注意してくださいlkwid

于 2013-05-02T17:36:38.747 に答える