私はもう私たちと一緒にいない請負業者のコードを調べているのですが、この場合のメモリー管理の処理方法がわからないのです。
static NSArray *_sharedSample = nil;
.mファイルで宣言されています。それから彼らは
_sharedSample = [[NSArray arrayWithObjects:someinfo here, nil] retain];
それでは、この場合、リリースはどこにあるのでしょうか。 プロジェクト全体で_sharedSampleを検索しましたが、[_sharedSampleリリース];は表示されません。静的オブジェクトの動作は異なるのですか。どこかでリリースする必要があると思いました。ありがとう。
回答:
回答№1は1静的変数は、オブジェクト、メソッド、または関数がいくつ知っていても、事実上アプリケーショングローバルです。
あなたはそれをそのままにすることができます。アプリが終了すると、メモリはシステムによって解放されます。
あなたは静的変数をnilに初期化するべきですあなたがここに持っているように宣言行で(ゼロ)。静的変数はアプリケーションのmain()関数の呼び出しよりも起動プロセスの早い段階で割り当てられます。つまり、割り当てプールはまだ存在しません。
最初のプールが作成される前にObjective-Cオブジェクトを作成しようとすると、メモリリークが発生する可能性があります。 (そうすると、デバッガコンソールに "just leaking"というメッセージが表示されます。)
途中で静的変数を解放する場合は、過解放ポインタやダングリングポインタによるエラーを防ぐために、ただちにそれをnilに設定する必要があります。