ここに投稿された質問のほとんどを調べましたが、グローバル変数に自信を持つほど明確な答えはありませんでした。
私がグローバル変数と考えているのは、で宣言されている変数です。
@interface HelloWorldLayer : CCLayer
{
//global variable goes here
NSString *string;
}
そして今、私はこの変数をどのメソッドでも使用できます。
これは正しいですか、それとも私は間違っていますか。
ここに投稿された質問のほとんどを調べましたが、グローバル変数に自信を持つほど明確な答えはありませんでした。
私がグローバル変数と考えているのは、で宣言されている変数です。
@interface HelloWorldLayer : CCLayer
{
//global variable goes here
NSString *string;
}
そして今、私はこの変数をどのメソッドでも使用できます。
これは正しいですか、それとも私は間違っていますか。
これは「グローバル」変数ではありません。HelloWorldLayer オブジェクトのインスタンス メンバー変数としてのみ使用できる変数です。xcode のグローバル変数については、このソリューションを参照してください。Objective -C プログラムのグローバル変数
これはグローバル変数とは呼ばれません。これはインスタンス変数です。しかし、はい、HelloWorldLayerの実装のすべてのインスタンスメソッドでアクセスできます。
こちらをご覧ください
静的変数を作成し、静的アクセサーを介して使用します。#import "staticVarClass.h"
PS静的変数を使用する必要がある場所に格納するクラスをインポートする必要があります。
HelloWorldLayer の外でアクセスしたい場合は、次のようなプロパティを作成する必要があります。
HelloWorldLayer.h
@interface HelloWorldLayer : CCLayer
{
NSString *string;
}
// Declare variable to be used outside the layer here
@property(nonatomic, copy) NSString* string;
@end
HelloWorldLayer.m
@implementation HelloWorldLayer
@synthesize string; // This matches the property "string" with the variable "string"
...
@end
実際、私の研究開発によると、 extern を使用してインスタンスを作成する必要があることがわかりましたが、最後のことは変数を #define することであり、インスタンスを作成せずに必要な場所にアクセスでき、他のものはその名前で変数を直接使用するだけです....
C グローバル変数 (アプリケーション全体でアクセス可能) が必要な場合は、インターフェイス宣言または .h ファイルの外側で、正確に 1 つの実装または .c ファイルで宣言する必要があります。他のファイルで表示できるようにするには、他のファイルで extern を宣言する必要があります。デフォルトでは初期化されないため、宣言で必ず初期化してください。
この方法で Objective C オブジェクト ポインター (NSString * など) を C グローバル変数として宣言すると、再利用できないコードやデバッグが困難なコードになる可能性が高くなることに注意してください。