問題タブ [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.

0 投票する
4 に答える
291 参照

iphone - プロジェクトでメモリ リークが発生する

UIImage ピッカー、ローカル通知、イベント カレンダー、日付ピッカー、Facebook 共有、サウンド、ナビゲーション コントローラー、データベースを使用しています。しばらくするとアプリケーションがクラッシュします。理由は同じではありません。メモリがいっぱいになることもあれば、メモリ警告を受け取る回数が多すぎることもあります。一般的にリークを取り除く方法を教えてください。

0 投票する
1 に答える
1630 参照

asynchronous - AVURLAsset loadValuesAsynchronouslyForKeys、同期バージョン?

AVURLAsset を同期的にロードする方法はありますか? 私のシナリオは、別のビューを表示しながらバックグラウンドでアセットをロードし、アセットの再生準備が整ったときに AVPlayer を表示するビューに変更する必要があるシナリオです。前ではありません。

非同期をロードしてデリゲート メソッドを呼び出して「アセットの準備ができました。次のビューを表示できます」と伝えようとしましたが、その前に mem 警告が表示されると、バックグラウンドでアセットを含むビューが終了する前に解放されます。読み込み中...だから私はデリゲートコールを受けません。そのため、私はむしろ同期的にそれを行います。

何か案は?

0 投票する
1 に答える
42 参照

iphone - ユーザーが以前にこれを使用していた場合、詳細ページへの自動ジャンプを実装するにはどうすればよいですか (または、設計上の欠陥があるこれを行うためのコードを修正します)。

私が持っているこの問題を修正する方法、またはより良い実装設計についてのアドバイスはありますか?

要件

  • 前回のセッションでアプリケーションを終了する前に、アプリケーションの起動時にユーザーを前の詳細ページに移動させる方法が必要でした。
  • アプリのメイン画面にあった場合は、再起動時にここにとどまることができます
  • 私はUINavigationControllerで作業しており、メイン画面と詳細画面はUITableViewController上に構築されていると仮定しています

私の実装コンセプト

  • 「viewdidLoad」にチェックを入れて詳細画面かどうかを確認し、そうであればこちらへジャンプ(下記コード参照)

問題

  • 通常は正常に動作しますが、メモリ警告をトリガーすると、問題が発生し、ナビゲーションバーの奇妙な動作が発生します。たとえば、詳細ページのコンテンツ (UITableView) にいるように見えるときに、メイン ページのナビゲーション ボタンが表示されます。

私の分析

  • 詳細ページ (appointmentsListController) にいて、シミュレーターでメモリ警告が表示されたときに表示される内容から、次のように表示されます。

    (a)メインページ「viewDidLoad」が実際に呼び出されますが、これは私のコンセプトでは予期していなかったため、詳細ビュー(UINavigationController)から戻るボタンを押してメインビュー(RootViewController)に移動しましたが、実際には私のコードが実行され、ユーザーを詳細ページに戻そうとします

    (b) この時点の後、[AppointmentListController viewDidLoad] が以前の AppointmentListController dealloc メソッドが呼び出される前に呼び出されたように見えることをログに記録しました (つまり、コントローラー A にいたように、コントローラー B に戻りましたが、A にスローされました -そして、最初の部分の最初の解放は遅くまで開始されませんでした...)

  • ですから、私のアイデアがあまり素晴らしいものではないことは明らかだと思います

質問

私の要件をより適切に実装する方法について何か提案はありますか? (確認方法、どの方法で入れるか)

コード

0 投票する
2 に答える
1547 参照

ios - didreceivememorywarningにより、表示されているView Controllerでviewdidunloadが発生します

現在表示されているビューコントローラー(スーパービュー!= nil)がアンロードされているときにメモリ警告を処理する方法について、私は完全に混乱しています。セットアップは、rootViewController としての tabbarcontroller、ビュー コントローラーを含むナビゲーション コントローラー、たとえばビュー コントローラー A です。ビュー コントローラー B をビュー コントローラー A のナビゲーション スタックにプッシュします。メモリ警告をシミュレートします。

1) ビュー コントローラー A はメモリ警告を受け取り、そのビューはアンロードされますが、すべて問題ありません。

2) ビュー コントローラー B (現在表示されている) にメモリ警告が表示されます。そのスーパービューを印刷します。ナビコントローラーの

3) 私が次に知っていることは、目に見えるビュー コントローラーのビューがアンロードされていることです (ビュー コントローラーの viewDidUnload メソッドのブレークポイントがヒットします)。

私は現在このView Controllerを見ているので、戻ってナビゲートしない限り、そのviewDidLoadは再び呼び出されることはありません。これは、superview != nil のときにビューがアンロードされない!という多くの投稿と矛盾しているようで、スタック全体を調査しました!

明確にするために、viewDidUnloadで何をすべきか、または解放するデータの種類などを尋ねていません。フレームワークが、明らかにまだビュー階層の一部であるビューコントローラーにdidReceiveMemoryWarningを送信している理由を理解しようとしています。

考え?

0 投票する
1 に答える
3288 参照

ios - UINavigationController スタックでの didReceiveMemoryWarning の使用方法

私のアプリには、スタック内 (UINavigationController の下) にいくつかの UIViewControllers があります。特定のケースでは、内部 UIViewControllers にいるときにメモリ警告が表示されます (ほとんどの場合、バックグラウンドで実行されている他のアプリケーションでデバイスが過負荷になっている場合に発生します)。これらのメモリ警告が発生すると、アプリケーションは実行を継続し (ほとんどの場合)、アプリケーションに戻るrootViewControllerとリロードしますが、ビュー オブジェクト (ほとんどは UIButton 画像) を埋めません。

と を実装didReceiveMemoryWarningしたいapplicationDidReceiveMemoryWarningのですが、その方法がわかりません。

私が探している最終結果は、アプリケーションがメモリ警告の後にこの「リロード」を行うとrootViewController、ユーザーが内部の UIViewControllers に「飛び込む」前と同じ状態で「リロード」することです。

  • 実装はどうすればいいですか?
  • didReceiveMemoryWarning各 UIViewControllerにデフォルトを実装する必要がありますか?
  • rootViewControllerメモリ警告は常に内部 UIViewControllers で発生するため、実行する必要があることをどのように通知すればよいdidReceiveMemoryWarningですか?
  • どの設定を行うべきかを に伝えるにはどうすれrootViewControllerばよいですか? 言い換えれば、設定をdidReceiveMemoryWarning削除しない場所に保存し、 didReceiveMemoryWarning「リコール」を有効にして、ユーザーが「レベルナビゲーション」を開始したのと同じ画面が表示されるようにすることはできますか?
0 投票する
2 に答える
880 参照

ios - メモリ警告を受け取りました。iPadのレベル=1

この質問に関して、私は多くの研究を行い、異なる提案を得ましたが、これらの100%の作品ではなく、15のビューコントローラーがあり、すべての不要なオブジェクト、変数、およびデロック画像データと不要なものすべてをリリースしています。アプリがクラッシュすることはありませんが、Receivedmemoryの警告が表示されます。レベル=1の警告が表示され、画面が突然真っ暗になります。

さらに、バックグラウンドでアプリケーションが実行されていない場合、アプリを10〜15分間サーフィンした後、以下の警告が表示されました。ipadでバックグラウンドで実行されているアプリケーションの数が、アプリをサーフィンしてからわずか5分でエラーが発生した場合よりも多い場合。

私は以下の提案を試しました他の人からこのタイプの質問への回答

  1. - (void)didReceiveMemoryWarning関数でオブジェクトのロックを解除して解放します
  2. MKMapViewの解像度を変更します

この問題について、教えてくれる以外の解決策を誰かに教えてください。

よろしくお願いします。

0 投票する
1 に答える
775 参照

uiscrollview - UIImageView UIScrollView HighRes Image メモリ警告

iPadでUIScrollViewに10枚以上の写真を横向きモード(1024x768)で全画面表示しています。私は非常に大きな問題に直面しています: GDC を使用してすべての UIImageView を非同期にロードし、すべてのビューを ScrollView にサブビューとして追加します。別のギャラリーをロードするときは、最初に UIScrollView 内のすべてのビューを削除してから、すべてを非同期的に再ロードします。ギャラリーをすばやく切り替えなくても問題ありません。代わりに、ギャラリーと他のギャラリーを切り替えると、別のメモリ警告が表示され、アプリケーションがクラッシュします。インストゥルメントで見てみると、サブビューに全てのビューを追加するとリークはなくメモリ消費が激しいのですが、上がっていません。何が問題になる可能性がありますか? オブジェクトのパージを強制するために NSAutoreleasePool を使用できますか?

0 投票する
2 に答える
613 参照

ios - 何時間ものデバッグの後の iOS メモリ警告

iPad アプリを作成していますが、奇妙な動作が見られます。キューブ面にテクスチャ イメージをロードしています。各テクスチャのサイズは 1024x1024px です。

アプリでしばらく作業すると、デバッグ中にメモリ警告が表示され、アプリケーションがクラッシュします。作業時間が長くなり、デバッグセッションが実行されるほど、メモリ警告が頻繁に発生し、最悪の場合、毎回メモリ警告が発生します。

オフにしてからオンにすると、iPadアプリは完全に機能し、すべてが正常で、エラーはありません(しばらくの間...)。

デバッグ中にアプリがクラッシュすると、メモリが解放されない可能性はありますか? そして、複数回のクラッシュの後、iPad には以前のリークから大量のゴミが溜まり、正常に動作できなくなったのでしょうか?

0 投票する
1 に答える
1688 参照

ios - iOS: viewWillUnload?

の場合、ビューがアンロードされた場合に備えて、ユーザーが入力したテキスト文字列を (ivar に)UIViewController保存したいと思います(または)。NSStringUITextViewUITextField

どこでこれを行う必要がありますか?

UITextView意志はすでに にリセットされているとnil思いますviewDidUnloadよね?

だから、私はこのようなことをしたい:

しかし、そのviewWillUnload方法は何ですか?ですかdidReceiveMemoryWarning

0 投票する
1 に答える
522 参照

ipad - UISplitViewController を使用して、viewDidUnload (メモリ警告の後) から回復する方法

分割ビュー ベースの iPad アプリケーション (ポートレート モードのみ) を作成しています。呼び出し後に初期状態に戻す方法を知りたいですviewDidUnload

分割ビュー アプリケーションの初回起動時に、 -splitViewController:willHideViewController:withBarButtonItem:forPopoverController: が自動的に呼び出されます ( の直後-viewDidLoad)。メソッドにUIBarButtonItemsを用意します。

モーダル ダイアログなどを開くとUIWebViewController(多くのメモリを消費します)、アプリケーションがメモリ警告を受け取り、viewDidUnload(s) が呼び出されます。

モーダル ダイアログを閉じると、-viewDidLoad が自動的に呼び出されますが、今回 -splitViewController:willHideViewController:withBarButtonItem:forPopoverController:は呼び出されません。

UIBarButtonItems を用意しました -splitViewController:willHideViewController:withBarButtonItem:forPopoverController: が、呼び出されていないため、ボタンが閉じられます。

その場合、メソッドを手動で呼び出す必要がありますか?

ここで同様の投稿を見つけました。 https://github.com/grgcombs/IntelligentSplitViewController/issues/6

ありがとう。