私はiPad用のインタラクティブな本を作成していてUINavigationController
、ページと次のページの間のナビゲーションを実装するために使用しています。ユーザーがページをめくると、次のページがナビゲーションスタックの一番上にプッシュされます。
アプリを15ページ表示しましたが、14ページから15ページに移動しようとすると、アプリがクラッシュします。コンソールにエラーメッセージが表示されず、デバイスのクラッシュログにも何も表示されません。
ストーリーボード内の各ビューコントローラのシーンにはUIImageViews
、5MBから20MBの画像が表示されます。ビューコントローラのviewDidLoad
メソッドは一度だけ呼び出されます。すべてのアプリのアセットの合計サイズは200億未満です。ARCを使用しています。
Instrumentsのメモリモニターを使用してアプリを実行しました。アプリのリアルメモリ消費量は、新しいページがめくられるたびに約80MB増加し、800MBに達するとクラッシュします(デバイスはiPad 3です)。
なぜこんなに膨大なメモリを消費するのでしょうか?これは、ストーリーボードのシーンのUIImageViewが画像をキャッシュするためですか?
UINavigationController
とARCを使用する場合、メモリを解放するための最良の方法は何でしょう か。
ビューコントローラのメソッドですべてのビューコントローラのサブビューをnilに設定して追加しようとしましたviewDidDisappear:
が、メモリ消費量は同じままでした。