15

StackOverflowの質問「キャッシュされた変数を定義するときにobjective-cでstaticキーワードを使用する」は、XcodeのTableViewSuiteの例4のコードを参照しています。static NSDateFormatterallocrelease

static変数を解放すべきではありませんか?はいの場合、コードのどこでリリースする必要がありますか?いいえの場合、なぜですか?

4

2 に答える 2

16

static変数を解放するべきではありませんか? はいの場合、コードのどこでリリースする必要がありますか? いいえの場合、なぜですか?

場合によります。変数が一度だけ初期化され、アプリケーションの存続期間中存続する必要がある場合は、変数を解放するべきではありません (とにかく、アプリケーションが終了すると、そのメモリは基本的に解放されます)。ただし、静的変数の値が変更された場合は、静的変数が新しいオブジェクトに設定されたときに以前のオブジェクトを解放する必要があります。

于 2011-04-06T15:19:22.433 に答える
2

その質問に対する受け入れられた回答がすでに述べているように、静的変数を解放することは不可能です。それらは、プログラムと同じ有効期間を持つ関数にのみ表示されるグローバル変数のように機能します。

その静的変数が保持している変数のために肥大化が懸念される場合は、(何らかの方法で) それらの参照を解放する必要があります。したがって、たとえば、静的変数が NSMutableArray であり、内部にオブジェクトを追加し続ける場合、ある時点で配列を空にしない限り、常に増加し続けます。

于 2011-04-06T15:19:59.497 に答える