2009-10-06 6 views
11

または、+(void)の反対は何ですか?目的C - グローバルな静的変数はどこでdeallocしますか?

:関数としてUnit.mファイルで定義された遅延して作成されたグローバルNSDictionaryの、からのデータをとります(ID)initWithNameは - 私はそのクラスのユニットを、持っている

:ここ

は、私の状況です

静的NSMutableDictionary * unitLibrary = nil;

ここで[unitLibrary release]を呼び出しますか?

答えて

13

ディクショナリがもう必要ないと分かっている場所で呼び出すことができます。アプリケーションのライフサイクル全体にわたって必要な場合は、アプリケーション終了時にすべてのメモリがOSによって再利用されるため、何もする必要はありません。

+0

これはiphoneにあるので、メモリリークは発生しません。ユーザーがホームボタンを押してアプリケーションを終了すると、ヒープ全体が割り当て解除されますか? – abtree

+1

はい、ヒットを含めて、アドレス空間全体が処分されます。 –

+2

家を壊す直前にスプリングクリーニングをする必要はありません。アプリの終了は十分に速く、より速いです。 – PeyloW

3

一般的な回答はありません。再度使用されないことを確認したら、割り当てを解除する必要があります。可能な候補は、applicationWillTerminateデリゲートメッセージにあるか、またはatexit()機能を使用している可能性があります。

+0

アプリケーションが終了したときにオブジェクトを解放することは意味がありません - とにかくメモリは解放されようとしています。 – Chuck

+0

はい、これは悪いことです。OSでクリーンアップするだけです。ここで仕事をしても意味がありません。あなたは単にアプリケーションを終了するだけです。 – Ken

+1

リーク検出ツールによって生成されるクラッタの量を減らすことは、間違いなく有用です。しかし、おそらく努力の価値はない。 –

関連する問題