0

私は開発の初心者で、約150のViewControllerを備えたアプリケーションを作成しています。それぞれにUIImageViewがあります。

私は少しテストを行ってきましたが、iPhone自体でアプリをしばらく使用した後、ViewControllerを表示し続けるとクラッシュします。

私はこれを機器で分析してきましたが、リークはありませんが、メモリ割り当てが増え続け、iPhoneでViewControllerを表示し続けると、クラッシュするまで使用量が増え続けます。

アプリが単にメモリを大量に消費しているため、クラッシュしていることは明らかだと思います。

だから誰もがメモリを解放してクラッシュしないようにviewControllersを解放する方法を説明できますか

前もって感謝します !

4

1 に答える 1

0

自分自身に尋ねる必要がある最初の質問は、なぜ150個のViewControllerが必要なのかということです。150種類の画像を表示しますか?もしそうなら、複数のViewControllersは行く方法ではありません。おそらく、画像を含むUIScrollViewを使用する必要があります(もちろん、一度にすべてではありません。遅延読み込みを使用してください)。

あなたのケースでおそらく起こっていることは、新しいViewControllerを表示する必要があるたびに「pushViewController」を呼び出すことですが、これは以前のViewControllerを解放しません。以前のすべてのViewControllerをスタックし、それらのポインターを保持するだけです。

ご覧のとおり、ナビゲーションコントローラーの動作は、ビューコントローラーの配列を備えていることです。新しいViewControllerを提示するたびに、配列の最後に追加されます。「戻る」をクリックするか「popViewController」を呼び出すと、配列の最後の項目が削除されます(その後、メモリから自動的に解放されます)。

画像をスクロールするUIScrollViewを作成する方法については、この質問とこの質問を参照してください。

于 2012-11-02T22:10:08.123 に答える