nsobjectクラスでグローバル変数を宣言します(目的C)

global-variables iphone objective-c variables
nsobjectクラスでグローバル変数を宣言します(目的C)

グローバルなnsobjectクラスで変数といくつかのメソッドを宣言します

@interface classGlobal : NSObject {
    NSString *myGuid;
}

@property(nonatomic,assign)NSString *myGuid;

そして、私は.mクラスで合成します。 しかし、同じクラス(classGlobal.m)のmyGuid変数にアクセスしようとすると、「クラスメソッドでアクセスされたインスタンス変数 ‘myGuid’」というエラーが表示されます。 この問題を解決する方法を提案してください。

  -1  0


ベストアンサー

これは、クラス変数からインスタンス変数にアクセスできないことを意味します。 クラスメソッドは、-の代わりに+を使用して宣言されます。 グローバル変数を使用する必要がある場合は、https://stackoverflow.com/questions/338195/global-variables-in-cocoa-objective-c [this]の質問をご覧ください。 そして、これはhttps://stackoverflow.com/questions/1113980/global-variables-in-objective-c [別の1つ]です。

3


コンパイラは、スコープ内でmyGuidを使用していると文句を言います。 interface`部分での myGuid`の宣言は、グローバル変数を定義するのではなく、インスタンスメンバー変数を定義します。 グローバル変数が必要な場合(たとえば、 -`ではなく + で宣言されたクラスメソッドからアクセスする必要があるため)、通常どおり、 .m`ファイルで宣言します。

MyClass.m:

    static NSString* myGuid = nil;

    + (void) someClassMethod {
        if( myGuid == nil ) ...
    }

1


タイトルとURLをコピーしました