1

static変数がObjective-cクラスのメソッドの ように宣言されている理由がわかりませんか?

static変数 のスコープは何ですか?

4

2 に答える 2

3

static変数は、スタックフレームがスタックからポップされても破壊されません(通常の変数は破壊されます。そうしないと、壮大なメモリリークが発生します)。ローカルでのみアクセスできるグローバル変数としてそれらを参照してください。プログラム全体が終了するまで、それらは存続します。

例:

+ (id)sharedInstance {
  static singletonInstance = nil; // for example
  if (singletonInstance == nil) {
    singletonInstance = [[self alloc] init];
  }
  return singletonInstance;
}
于 2011-08-10T20:34:00.413 に答える
1

スコープはCと同じようにファイルレベルにあります。静的であるため、変数はアプリケーションの存続期間中残り、クラスのすべてのインスタンスがそれにアクセスできます。良い例は、シングルトンインスタンスを参照する、グローバルカウンターを実装する、またはある種のリソースロックを実装することです。

于 2011-08-10T20:35:30.230 に答える