問題タブ [didreceivememorywarning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - UINavigationController のビュー コントローラー スタック内の一部のビュー コントローラーで didReceiveMemoryWarning が呼び出されない
View Controller A をルート View Controller として UINavigationViewController を作成し、View Controller B をプッシュします。シミュレーターでメモリ警告をシミュレートすると、A の didReceiveMemoryWarning のみが呼び出されます。確かに、A と B の両方で didReceiveMemoryWarning をオーバーライドしました。最終的に、A の didReceiveMemoryWarning 内で B の didReceiveMemoryWarning を呼び出すことで、問題を回避しました。ただし、B のメソッドが自動的に呼び出される理由はわかりません。A の viewDidUnload と B の viewDidUnload は両方とも期待どおりに呼び出されます。これは、B からモーダル ビュー コントローラーを提示しているときに警告をトリガーするためです。
ビュー コントローラー B がナビゲーション コントローラーのルートである場合、問題なく didReceiveMemoryWarning が呼び出されます。
ios - メモリの問題 - リビング vs. 全体 -> アプリが強制終了
Instruments でアプリケーションのメモリの問題を確認しようとしています。アプリケーションをロードすると、いくつかのサウンドが再生され、UIImageViews でいくつかのアニメーションが表示されます。メモリを節約するために、必要なときだけサウンドをロードし、再生を停止するとメモリから解放します。
問題 1:
私のアプリケーションは約 5.5MB の Living メモリを使用しています。しかし、全体のセクションは開始後 20MB まで成長し、その後ゆっくりと成長しています (約 100kB/秒)。しかし、責任のあるライブラリは、OpenAL (OAL::Buffer)、dyld (_dyld_start) です。これが実際に何であるかはわかりません。また、ft_mem_qrealloc、CGFontStrikeSetValue などの他のものもあります。
問題 2:
全体のセクションが約 30MB 壊れると、アプリケーションがクラッシュします (強制終了されます)。全体的なメモリについて既に読んだ事実によると、それは私のすべての割り当てと解放が約30MBであることを意味します。しかし、私は本当に問題がわかりません。たとえば、サウンドが必要なときはメモリにロードし、不要になったらリリースします。ただし、1MB のサウンドをロードすると、この操作によって全体的なメモリ使用量が 2MB 増加します。私は正しいですか?そして、10個のサウンドをロードすると、アプリがクラッシュするという理由だけで、全体的に高すぎて、生活がまだ低いという事実がありますか??? 私はそれについて非常に混乱しています。
誰かがそれを片付けるのを手伝ってくれませんか?
(私は iOS 5 で ARC を使用しています)
いくつかのコード:
サウンドの作成 OpenAL:
遊ぶ:
AVAudioPlayer でサウンドを作成する:
停止して解放します。
そして画像アニメーション:私は大きなPNGファイルから画像をロードします(これは私の他のトピックにも当てはまります:https://stackoverflow.com/questions/12223714/memory-warning-uiimageview-and-its-animations)アニメーション配列を設定してアニメーションを再生しています...
この配列は、次のように単純に使用します。
ios - 画像によるCocos2dのメモリ警告
700近くのpng画像を含むCocos2dシーンを読み込んでいます。このシーンをXcodeから直接実行しても、コンソールにいくつかの画像名の長いリストとともにメモリ警告メッセージが表示されます。
私はそれらをdeallocで適切に割り当て解除していますが、今回このシーンに再び来ると、画像の半分をロードしているときにゲームがクラッシュします
これは、一度に大量のテクスチャをロードする問題ですか、それとも問題のあるコードですか?
このクラッシュを回避するために、非常に多くの画像の読み込みを処理し、適切なメモリ管理を行うにはどうすればよいですか?
iphone - viewDidUnload でどのプロパティを nil に設定する必要がありますか?
viewDidUnload を適切に使用しているかどうかはわかりません。.h ファイルで宣言したすべてのものをリリースする必要がありますか?
これが私が今やっている方法です:
そしてviewDidUnloadで:
これは正しいことですか?
私のアプリはすべてのメモリ警告でクラッシュするため、おそらくそうではありません。
ありがとう!
objective-c - iOS6でのviewWillUnloadの非推奨とdidReceiveMemoryWarningへの移行
私は新しい開発者で、最初のアプリをリリースしようとしています。viewDidUnload
以下のAppleのiOS6リリースノートで説明されているように、の非推奨について混乱しています。
iOS 6では、UIViewControllerのviewWillUnloadメソッドとviewDidUnloadメソッドは非推奨になりました。これらのメソッドを使用してデータを解放する場合は、代わりにdidReceiveMemoryWarningメソッドを使用してください。このメソッドを使用して、ビューコントローラのビューが使用されていない場合は、そのビューへの参照を解放することもできます。これを行う前に、ビューがウィンドウにないことをテストする必要があります。
なぜこうなった?この変更によってアプリのパフォーマンスの問題が発生しないようにするには、どのガイドラインに従う必要がありますか?
ありがとう。
uiviewcontroller - メモリ警告(Appleドキュメントの欠陥)でiOS 6のビューをアンロードする適切な方法は何ですか?
iOS 6ではviewWillUnload
、viewDidUnload
は非推奨になり、UIViewControllersは、メモリ警告中に画面に表示されないビューをアンロードしなくなりました。View Controllerプログラミングガイドには、この動作を手動で復元する方法の例があります。
コードサンプルは次のとおりです。
コードサンプルの下には、次の注記があります。
次にviewプロパティにアクセスすると、最初のときとまったく同じようにビューが再ロードされます。
ここには明らかな欠陥があります。ビューをロードしていないViewControllerがメモリ警告を受信した場合、そのビューを行にロードしてif ([self.view window] == nil)
から、クリーンアップして再度解放します。せいぜい、これは非効率的です。最悪の場合、複雑なビュー階層とサポートデータがロードされると、メモリ状態が悪化します。iOSシミュレーターでこの動作を確認しました。
私は確かにこれを回避してコーディングすることができますが、Appleドキュメントにそのようなエラーがあるのは奇妙に思えます。私は何かが足りないのですか?
ios - viewDidUnload で機能するものは didReceiveMemoryWarning に移動する必要がありますか?
新しい iOS 6 では非推奨となり、代わりに UIViewController インスタンスとサブクラスのオブジェクトを管理するためviewDidUnload
に使用するように指示されました。内部で行われた方法のように、didReceiveMemoryWarning
内部の UIView の種類に nil を割り当てることも同様に効果的ですか?didReceiveMemoryWarning
viewDidUnload
これらの 2 つの方法は動作が異なるように見えるため、これを尋ねています。必要なUIViewを再インスタンス化するために再度呼び出されることをdidReceiveMemoryWarning
保証していないようです。viewDidLoad
iOS 6 では、手動で UIView の割り当てを解除する必要なく、メモリ管理が行われるのではないかと思います。UIViewController のライフサイクルを理解する上で見逃していることを教えてください。
ios - iOS - viewDidUnload は呼び出されませんが、didReceiveMemoryWarning が呼び出されます
特定のデバイスでのクラッシュの原因を突き止めようとしています。ビュー コントローラーが を受信していることに気付きましたが、受信didReceiveMemoryWarning
していませんviewDidUnload
。そしてAppleによると:
ビュー オブジェクトへの参照を解放するために didReceiveMemoryWarning を使用することはありません。それを使用して、viewDidUnload メソッドでまだ解放していないビュー関連のデータ構造を解放することができます。(ビュー オブジェクト自体は、常に viewDidUnload メソッドで解放する必要があります。)
そう、
A: なぜviewDidUnload
呼び出されないのですか? ビュー オブジェクトが呼び出されない場合、ここでビュー オブジェクトを削除することはできません。
B: でビュー オブジェクトを削除しないとしたらdidReceiveMemoryWarning
、他にどこで削除しますか?
C: ARC を使用していますが、ビュー オブジェクトを削除したり、配列を nil に設定したりする必要はありますか?
ios - iOS でメモリ警告を受け取ったときのメモリ使用量のしきい値
iOS アプリでこれらの警告を受け取りました
問題は、レベル = 2 の警告の後、アプリが強制終了されることです...このような警告が表示されるまで、アプリは何 MB のメモリを使用できますか? レベル 2 のメモリ警告でアプリが強制終了される前に、XCode Instruments で 30Mb 未満の「Live Bytes」を取得しています。これは私の読み取りミスですか、それともアプリで 30Mb を超えるメモリを使用することは想定されていませんか?
私は iPod Touch 第 4 世代と iPhone 4 を使用してテストを行っており、これらのデバイスを最小限としてターゲットにしています。
アドバイスをいただければ幸いです。よろしくお願いします。
iphone - didReceiveMemoryWarning が実際に呼び出されるのはいつですか
私は個人的didReceiveMemoryWarning
に以前に呼ばれたのを見たことがありません。呼び出されるメモリ使用量の既知のしきい値はありますか?