2

アプリでメモリの警告が表示されるので、これに気付きました。ナビゲーション コントローラーとそのルート ビュー コントローラーがあります。このルート ビュー コントローラーから、別のビュー コントローラーを呼び出してナビゲーション スタックにプッシュします。

[self performSegueWithIdentifier:sender:]

セグエは、ルート ビュー コントローラから新しいビュー コントローラへのモード PUSH です。

次に、このView Controllerを削除し、呼び出してルートView Controllerに戻ります

[self.navigationController popViewControllerAnimated:YES];

問題は、View Controller を約 20 回プッシュ アンド ポップすると、メモリ警告が表示されるようになることです。

didRecieveMemoryWarning は、1 つのフレームでビュー コントローラー上で約 20 回呼び出され、ポップされたすべてのビュー コントローラーがまだぶら下がっていることを示します。

その後、アプリは最終的にクラッシュします。

プッシュされたView Controllerへの参照がどこにも保存されていません。

私はios6を使用しているので、viewDidUnload()が呼び出されないことを知っています。

メモリの警告が表示されたら、キャッシュされたすべての画像を削除していますが、理想的には、ポップされた古いビュー コントローラーを破棄することですが、ストーリーボードを使用してこれを行う方法がわかりません。

コードから手動で pushViewController を呼び出していた場合、毎回再利用する単一のオブジェクト参照を維持できるため、プッシュする新しいビュー コントローラーを作成し続けることはありませんが、ストーリーボードから一歩離れています。

この問題に関するヘルプは大歓迎です。

ありがとう、スチュワート。

4

0 に答える 0