実行時間が続くにつれて、ARC対応プロジェクトがますます多くのメモリを消費する理由を理解するためにinit
、すべてのログにログを追加しました。dealloc
1つのビューコントローラが原因であることがわかりました。初期化時の主な任務は、を作成してオブジェクトNSMutableArray
で埋めることです。NSNull
実行中に、これらのnullオブジェクトをより意味のあるオブジェクトに交換します。その逆も同様です。基本的な遅延読み込みの設定です。
このビューコントローラがポップされると、NSMutableArray
その時点で存在していたnull以外のビューは解放されません。その結果、ViewController自体も解放されません。
これを解決するには、またはを空にするか、NSMutableArray
nilに設定します。
これが必要な理由は何ですか?ARCで配列を作成した場合でも、配列をnilに設定するのは常に私の責任ですか?または、他の何かが配列内のオブジェクトの1つを保持し、それが自動的に割り当て解除されるのを防いでいる必要がありますか?