問題タブ [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.
objective-c - iPhone Xcode ARC でメモリ警告が表示されるが、Instrument ではリークが表示されない
ARC Xcode 4.5 でアプリのコーディングを完了しましたが、「Received memory warning.」というメッセージが表示されます。そのため、私はそれをアップロードしていません。
計測器でテストすると、リークは表示されませんが、メモリ不足の警告が表示され、4〜5回の警告の後、アプリが終了します。
コメントのいくつかの点に疑問があります。
それとも他に問題があるのでしょうか?
ios5 - viewDidUnload は非推奨ですが、セカンダリ ビューへの強い参照はどうですか?
iOS6 では、このメソッドviewDidUnload
は非推奨になり、メモリ管理がUIViewController
. ここで、新しいパターンについて簡単に説明します。
ビュー コントローラーでより多くのメモリを占有する部分は、ビュー (そしてもちろん、最終的に作成する巨大なデータ) です。ビュー自体はそれほど多くのメモリを消費しません。バッキング ストアであり、描画される部分です (最も興味深いのは ですCABackingStore
)。この新しいパターンは、ウィンドウに表示されないビュー コントローラーのビューが所有するすべてのバッキング ストアが占有するメモリを揮発性としてチェックするようです。メモリ警告が発生すると、このバッキング ストアはメモリから消去されます。この方法を使用すると、非常にコストのかかるビューを再作成するプロセスを節約できます。
Apple は、viewDidUnload/viewWillUnload を iOS5 プロジェクトから削除しても安全であり、デプロイ ターゲットを iOS5 に設定しても、テンプレートにはこれらのメソッドが表示されないと述べています。ビューが所有するアウトレットが弱い場合、スーパークラスの実装でビュー コントローラーのビューを解放すると、ARC のおかげでリークやゾンビが発生することなく、すべてが正しく割り当て解除されることを理解しています。
私はこの新しいアプローチを本当に高く評価しているので、この種の状況には自信がありません: ビュー コントローラーとそのビューがあるとします。このビューは、ビュー コントローラーの xib で作成されたさまざまなビューをホストするコンテンツ ビューにすぎません。それらを実行時に動的に。このビューのアウトレットを作成すると、それらは自動的にストロングとして作成されます。これは、「メイン ビュー」がそれらを所有していないため意味があります。
新しいルールに関して、このビューのバッキング ストアは、iOS6 のメイン ビューによって所有されていないため、揮発性として署名されませviewDidUnLoad
ん。
どうすればこの状況を管理できますか? didReceiveMemoryWarning 内でそれらを解放するのは正しいでしょうか? ビューが一度だけロードされる場合、iOS6でそれらを再作成できますか?
ios - 他のアプリが実行されていないにもかかわらず、iPad のメモリ不足の警告が表示され、私のアプリは 8 MB しか割り当てません
他のアプリが実行されていないにもかかわらず、iPad でメモリ不足の警告が表示されます (計測器を介して検査)。また、アプリのライブ バイトは 8 MB しかありません。
私の理解では、システムのリソースが不足している場合にのみ、iOS はメモリ警告をトリガーします。私はまだそれらを手に入れることができますか?
(問題と関連する状況をよりよく理解するには、次の質問を確認してください:空の drawRect 実装によりメモリ警告が発生します)
ios - Cordova iOS カスタム プラグイン: メモリ警告の処理
cordova(2.1) といくつかのカスタム プラグインを使用する iOS アプリを開発しています。
私が直面しようとしている問題は次のとおりです: プラグイン (基本的には、組み込みのコルドバ プラグインよりも多くの機能を備えたカメラ プラグイン) を表示すると、メモリ警告が表示され、その結果、webview を含むビューがアンロードされることがあります。 . imagePicker が閉じられると webview が復元されないため、これは私にとって非常に大きな問題です。
CDVCamera プラグインのソースを調べたところ、次のことがわかりました。
(1) プラグインは webview を保存します:
ここで何が起こっているのかわかりません。メモリ警告の後にアンロードされる場合に備えて、webview を保存しますが、フレームワークのどこで webview がどのように/どこで復元されるかわかりません。
(2) プラグインは hasPendingOperation と呼ばれる Bool プロパティを使用します。このプロパティは、プラグインがアクティブな場合にメモリのパージを回避するために、メモリ警告が受信されたときに CDVViewController によって使用されることを理解しています。
私が理解していない最初のことは、私のコントローラーがメモリ警告を受け取ったときにスーパーコントローラー(CDVViecontroller)がそれを受け取らないのはなぜですか?
次に、カスタム プラグインでメモリ警告を処理するために、CDVViewController と組み合わせて CDVCamera プラグインで使用されるパターンを適用することは可能ですか?
WebView がアンロードされるのを避けるために、cordova でメモリ警告を管理するのに役立ちます。
ios - UIButton と UILabel を割り当てるときにメモリ警告を受け取りました
これが状況です:水平にスクロールするUIScrollView
(と呼ばれる) があります。A
このスクロール ビューでは、プロパティpagingEnabled
は に設定されていYES
ます。画面の右側に があり、これはUIButton
に接続されてself.view
おり、スクロール ビューでスクロールしません。
タップすると、このボタンは垂直にスクロールUIView
する別のUIScrollView
( と呼ばれる) を内部に表示します。B
このスクロール ビューには、UIButton
とのリストが含まれていますUILabel
。UIButton
バックグラウンドイメージとしてのすべてUIImage
。この方法では画像のタッチイベントを管理しやすいため、UIButton
代わりに使用しました。には、すべてのイメージの説明が含まれていますUIImageView
。UILabel
問題: のすべてのページについて、 に含まれるA scroll view
を変更する必要があります。これは、ページごとに異なるイメージ リストがあるためです。したがって、スクロール ビュー デリゲート メソッドでは、古いものと古いものをビューから削除し、それらが含まれている からも削除します。と の新しいリストを作成し、に追加して配列に挿入します。UIButton
B scroll view
scrollView:didEndScrollingAnimation
UIButton
UILabel
NSArray
UIButton
UILabel
self.view
[array addObject:]
可変数のスクロールの後、アプリはメモリ警告メッセージを受け取り、システムから強制終了されます。
私は ARC を使用しているため、古いオブジェクトが解放されているかどうかを理解することはほとんど不可能です (いずれにせよ、それらはシステム オブジェクトであるため、非常に困難です)。
何か案は ?
iphone - リリースしているのにメモリ警告を受信したためにiPhoneアプリがクラッシュする
ビューに行くたびに使用中のメモリが増えています..画像を保存していても。また、メモリ不足の警告が原因でアプリがクラッシュすることがありました。画像メモリが増加しないように誰かが解決策を教えてもらえますか?
ios - Instrumentsではなく、デバイスでのメモリ警告
400 ~ 500 個のファイルをダウンロードして解凍XML
し、解析するという大規模な同期プロセスがあります。このデータを使用して、RestKit API
. 自動解放プールを使用せず、最後にコア データのみを保存しようとしたため、最初は 450 MB 以上のライブ バイトでメモリ警告が表示されました。
私はそれを修正し、コアデータに頻繁に保存し、 @autoreleasepool
ブロックを使用しました。インストルメントを使用してアプリを実行すると、ライブ バイトが 20 MB ~ 30 MB しかなく、常にメモリが解放され、サイズが大きくならないことがわかります。プロセスは機能します。しかし、インストゥルメントなしでアプリを起動すると、ファイルを表示した後にMemory Warning
. 後でアプリがクラッシュします。
instruments
ツールを使用する場合と使用しない場合のアプリの実行の違いは何ですか? なぜ異なる結果に終わるのですか?
iphone - iOSのメモリ警告でURLキャッシュをクリアする
NSURLCache
メモリ警告を受け取ったときに共有をクリアすることは良い習慣ですか?このようなもの:
これによってディスクキャッシュも不必要にクリアされると想定するのは正しいですか?
もしそうなら、メモリキャッシュのみをクリアすることは可能ですか?
ios - applicationDidReceiveMemoryWarning中のiosコアデータの永続性
アプリ デリゲートの applicationDidReceiveMemoryWarning メソッドに managedObjectContext 保存を追加しました。現在、メモリ警告を受け取ると、一部のデバイスでアプリがクラッシュするようです。
既にメモリが不足しているため、保存によりアプリがメモリ制限を超えているようです。
そのメソッドでこの保存を行う理由は、通常のアプリ操作中に保存されなかった可能性があるものをキャッチするためです。
これが悪い習慣であるかどうか誰かに教えてもらえますか?
ありがとう。
iphone - iOSはdidReceiveMemoryWarning(同等のAndroidバンドルonSaveInstanceState)でデータを保存/保持します
私の質問は簡単です。いつメモリ警告を受け取りますか?で取得するためにデータまたは状態をどこに保存または保持する必要がありますviewDidLoad()
か?
たとえば、TextFieldを使用してビューを取得し、ユーザーがメールを作成してから別のアプリで何かを実行すると、アプリがメモリ警告を受け取り、それを処理しますdidReceiveMemoryWarning
(おそらく、ビューはアンロードされます)。では、TextFielに設定するために、「電子メール」をどこに保存すればよいviewDidLoad()
ですか?Core Dataと一緒に保存する必要がありますか?SQL?
Androidを使用していて、SOがビューを削除しようとすると、メソッドOnSaveInstaceState
が呼び出され、データをバンドルに保存できます。iOSに同様のオブジェクトはありますか?
どうもありがとう。