2011-08-10 7 views

答えて

3

staticスタックフレームがスタックからポップされたときに変数が破壊されることはありません(通常の変数がそうでなければ、叙事詩的なメモリリークが発生します)。それらをローカル変数にしかアクセスできないグローバル変数として参照してください。彼らはプログラム全体が終了するまで生き続けるでしょう。

例:

+ (id)sharedInstance { 
    static singletonInstance = nil; // for example 
    if (singletonInstance == nil) { 
    singletonInstance = [[self alloc] init]; 
    } 
    return singletonInstance; 
} 
+1

"スタックフレーム"はどうですか? –

+0

@Rudy Velthuis、それは、ありがとう:) –

+1

FWIW、スタックフレームは "内部{と}"ではありません。これは、ローカル変数および関数引数のセットであり、戻りアドレスおよびいくつかの家庭の場所(例えば、スタックポインタおよびいくつかのレジスタを一時的に格納するためのもの)と共にある。現在のファンクションブロックからリターンするときに、明示的にreturnを呼び出すか暗黙的に終わりに到達すると無効になります。 –

1

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

関連する問題