私はこの件に関して、ここでいくつかの記事を見ましたが、確定的な回答はありません。ここに私の問題があります。UINavigationController:ポップ時にViewControllerのメモリを解放します
私はギャラリーとして使用するUINavigationController
を持っています。最初のコントローラでは、たくさんのリモート画像をロードします。これは私のメモリサイズを増やしますが、それだけではありません。画像をクリックすると、別のviewController
がプッシュされます。この画像には、クリックしたばかりのギャラリーの画像があります。これにより、それらの画像からさらに1MB以上のデータが読み込まれる可能性があります。
ここでの問題は、ユーザーがこれらのギャラリーをいくつでも参照できることです。私がviewControllerをポップすると、そのメモリは解放されないので、ユーザがギャラリーをブラウズし続けると、私はアプリであまりにも多くのメモリ使用量を取得し始めます。
viewController
がポップアップしてこのメモリを解放する方法はありますか?おそらく私のviewDidDisappear:
メソッドで?もしそうなら、私は何をリリースするのだろうか?そして、もう一度それを作ることができますか?私は、私の見解を解放するなどの点でこれを試しましたが、クラッシュします。
この問題に関する洞察はありますか?
PhotosGalleryiPad *gallery = [[PhotosGalleryiPad alloc] init];
gallery.items = self.items;
gallery.asset = self.currentAsset;
[self.navigationController pushViewController:gallery animated:YES];
[gallery release];
正直なところ...メモリは本当にする必要がありますように聞こえますスタックからポップするときに読み込んだビューの "dealloc"をアンロードします。 deallocの写真データをすべて正しく公開していますか?ユーザーが何らかの理由で、「戻る」ボタンをクリックすることなく、エンドレスに一連のビューをナビゲートできるようにしていない限り...ビューナビゲータのビューは、一般的にヘッダーの「戻る」ボタンのクリックを解除する必要があります。そうであれば、別のナビゲーションパラダイムを見たいかもしれません。 – Delete
いいえ、deallocが呼び出され、プロパティが解放されています。彼らはちょうどクリックし、コントローラを押し、通常の "戻る"ボタンをクリックしてルートにポップバックします。 –