0

マルチビューアプリケーションでは、ビューを自動的にメモリーが逼迫した状態で自動的にアンロードしたり、一度に1つのView Controllerを割り当てたほうが良いと思われますビューを切り替えると、新しいものが作成され、古いものが削除され、新しいものと古いものが解放されます。また、毎回割り当てを解除すると、新しいタブに切り替える際に若干の遅延が生じます(ごくわずかです)。それで、あなたはどう思いますか?iPhone dev - didReceiveMemoryWarningまたは毎回

また、(viewDidUnloadを使用して)ビューがどのように、いつ、どこで、誰によって公開されるのかが混乱しています。誰かが私のためにそれを明確にすることができれば、ありがとう。

答えて

1

一般に、(didReceiveMemoryWarning)または(再度使用される可能性の低いログインフォームのような)意味がない限り、ビューをアンロードしないでください。

固定量のメモリがあるとは思えません。 iPhoneはiPodに触れるよりもメモリが少ないiPhone 3GSはどちらのメモリよりも多くのメモリを持っています。壊れた携帯電話は、しばしばメモリが大幅に少なくなります。

3GSでアプリをより速く走らせる必要があるときにビューを解放するだけで、利用可能なメモリが少なくても実行できるようにします。

didReceiveMemoryWarningメソッドは、表示されていない場合はビューを解放します。以下では、ドキュメント(バージョン3.x)からです:

この メソッドのデフォルト実装は、ビュー コントローラが安全に ビューを解放できるかどうかを確認します。 ビュー自体にスーパービューがなく、 をnibファイル からリロードすることも、カスタムloadViewメソッドを使用してリロードすることもできます。 ビューを解放できる場合は、このメソッド が解放され、 viewDidUnloadメソッドが呼び出されます。

もちろん、キャッシュされたデータも解放する必要があります。 SDK2.xにはviewDidUnloadメソッドがありません。

+0

didRevisiveMemoryWarningは、ビューが表示されない場合、自動的にビューの割り当てを解除しますか? – mk12

+0

私は明確にするために質問を編集しました。 –

+0

だから、didReceiveMemoryWarningはメモリを解放するためのもので、viewDidUnloadはビューが解放されたときにビューに関連付けられた他のすべてのものを解放する場所です(viewDidUnloadをトリガーするビュー)を安全に解放できる場合はdidReceiveMemory警告が発生します。また、私のルートView Controllerがメモリ警告を受け取った場合、他のView Controllerもそれを渡しますか?または、アプリケーション内のすべてのView Controllerでメモリ警告が同時に発生するのですか? – mk12

0

あなたが頻繁に前にスイッチバックするビューの束を持っているなら、ユーザーがしばらくの間戻ってこなかった場所をtheresが見ているなら、その時間にそれらをメモリに保存すると言うでしょうおそらく、そのviewControllerをアンロードしてメモリを節約してください。しかし、1トンのメモリを占有しているビューがある場合は、使用していないときにViewControllerをアンロードすることをお勧めします。ビューにどのくらいの頻度で戻ってくるか、またビューに必要なメモリ量、ビュー数はどれくらいかという問題です。これらのことを考慮に入れれば、いつviewControllersをいつ、いつアンロードするのかを決定することができます。私はViewControllerが回っている限り、ビューが丸みを帯びていると信じています。(明示的にリリースしない限り、悪い副作用があるかもしれません。)viewdidUnloadは、ビューが画面をアンロードしたことを、その時点でtho。

+0

ユーザーがどのくらい頻繁に切り替えるか分からない場合はどうすればよいですか? – mk12

+0

あなたは、ユーザーが画面上にどれくらいの頻度でいるかを考えなければなりません。例えば、あなたのアプリのメインメニュー画面には、おそらく設定画面より多くのものがあります。とにかく、あなたのために最高のものを決める必要があります。 – Daniel

関連する問題