1

急いで発行させてください。これまでのところ、私のコードには問題はありません。私の唯一の懸念はメモリ管理です。アプリのロジックを明確にしましょう。

  1. アプリがグローバルに起動されると、NSmutableDictionary が宣言され、300 近くの画像がさまざまなキーと共にその Dictionary に追加され、画像は pathForResource:ofType メソッドを使用して追加されます。

  2. rootViewController がロードされた後、35 個のカスタム UIView が別のキーを使用して同じグローバル ディクショナリに追加されます (この rootViewController は頻繁には使用されません)。

  3. 私は 4 つの ViewControllers を持っており、この UIViews と画像をグローバル ディクショナリからすべての ViewControllers に使用します。

  4. 別のviewControllerに移動するときに、ビューを解放してnilにします。

  5. 私の問題は、ViewController間を高速に移動するときです( 1 --> 2 --> 3 --> 4 -->1 )。これを 4 ~ 6 回繰り返すとクラッシュします。

  6. ゆっくり動くと、10 ~ 15 回でクラッシュします。

ライブ バイトが最大 5 MB であってもクラッシュする理由がわかりません。コンソールとデバイスログから得られるのは、受信メモリの警告だけです。インスツルメントを使用している間、漏れや汚れのないサイズや常駐サイズはありません。

シミュレーターで実行している間、この問題が発生した複数のデバイスでのみこの問題が発生しません。

以下の疑問があります

  • グローバル辞書にすべてを追加するのが良いかどうか。私の考えは、すべてのViewControllerの読み込み時間を短縮することです

  • 同じ画像を再利用するには、pathForResource またはメソッドという名前の画像を使用できます。

前もって感謝します ...

4

1 に答える 1

5

だからあなたの質問:

メモリ警告を受け取る不明な理由

最初の理由:

アプリがグローバルに起動されると、NSmutableDictionary が宣言され、 約 300 の画像がさまざまなキーを使用してその辞書に追加され、画像は pathForResource:ofType メソッドを使用して追加されます。

2 番目の理由:

rootViewController がロードされた後、35 個のカスタム UIView が別のキーを使用して同じグローバル ディクショナリに追加されます。(この rootViewController はあまり使用されません)

その他の質問:

グローバル辞書にすべてを追加するのが良いかどうか。私の考えは、すべてのViewControllerの読み込み時間を短縮することです

いいえ、そうではありません...遅延初期化?

同じ画像を再利用するには、pathForResource またはメソッドという名前の画像を使用できます。

実際に必要なときに使用する限り、好きなように使用できます。

于 2013-03-21T13:00:13.990 に答える