問題タブ [memory-warning]

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 投票する
3 に答える
510 参照

objective-c - インスタンス変数がメモリ警告でクリアされないようにする

しばらくの間、解決策を回避してきた比較的単純な問題があります。ビュー コントローラーと関連する XIB があります。ビューコントローラーは と呼ばれFooterViewControllerます。 FooterViewControllerのビューは、テーブルビューのフッター ビューとして設定されます。

FooterViewControllerのビューには、ユーザーにフィードバックを表示するためのラベルが含まれています。アプリケーションによって値が変更されるまで、このラベルを保持したいと考えています。通常の状況では、そうです。ただし、メモリ警告でテストを開始したばかりで、メモリ警告に応答してビューがアンロードされた後、ラベルがクリアされることがわかりました。

この問題を解決するためにこれまでに試したことは次のとおりですFooterViewController。 の viewWillUnloadメソッドで、ラベルのテキストを というインスタンス変数に保存しますstatusString

として宣言されている別のインスタンス変数もNSInteger testInt5 に設定していることに注意してください。

次に、FooterViewControllerviewDidLoadメソッドで、ラベルのテキストを次のように設定しようとしますstatusString

ただし、これは機能しません。さらに、メモリ警告をシミュレートした後のログには、次のように表示されます。

(「Invalid IP address Error code: 113」が statusString の正しい値であることに注意してください)

次に、FooterViewControllerもう一度移動すると、次のように表示されます。

これは、何らかの理由で、FooterViewControllerビューが再度読み込まれたときに のインスタンス変数が再初期化されていることを示しています。最後の注意:initWithNibName:bundle:ビューをリロードする必要があるたびにメソッドが呼び出されますが、これは予想通りです。結局、ビューは NIB から再ロードする必要があります。

だから、私の質問はこれらです:

  1. ビューをアンロードおよび再ロードするプロセスで、これらのインスタンス変数が無効化またはゼロ化されているように見えるのはなぜですか?
  2. この無効化の原因となっている何か間違ったことをしている場合、それは何ですか?
  3. 私が間違ったことをしていない場合、これは通常の動作であり、ビューのロード間で状態を維持するにはどうすればよいですか?

ありがとう、ライリー

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

ios - iOS - メモリ警告を受け取りました

アプリは、バンドルからビデオ n オーディオを再生します。iPod Touch でアプリをテストしていると、ビデオが再生される直前に、メッセージがログに記録されます。アプリが(別のviewControllerで)オーディオプレーヤーを準備したい場合、メッセージをログに記録することがあります。

しかし、私はまだクラッシュしていません!:D複数のアプリが開いている他のデバイスで実行するとクラッシュするかどうかはわかりません. それで、私はこれについて心配する必要がありますか?別のスレッドでAudioPlayerまたはmoviePlayerを準備する必要がありますか? または単にそれを無視しますか?

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

iphone - iPhone SDK:メモリ警告後にUIBarButtonItemが更新されない

の非常に奇妙な動作に直面していUIBarButtonItemます。

以下にコードを貼り付けたテストアプリでバグを再現することができました。

最初のビューには、GUIDを表示するラベル、空の2番目のビューに移動するためのボタン、およびがありUIBarButtonItemます。クリックすると、色が緑から赤に、またはその逆に変わり、GUIDが更新されます。

これを再現する方法は次のとおりです。

  • 2番目のビューに移動します
  • メモリ警告を発生させます(シミュレータハードウェアメニューで、ただしデバイスの実際のメモリ警告でも同じように機能します)
  • 最初のものに戻る
  • クリックUIBarButtonItem

以前のUIBarButtonItem状態であっても更新されておらず、ログにはすべてが正しいように見えることが示されています。

ViewController.h

ViewController.m

そしてストーリーボード:

ストーリーボード

シミュレータ5.0と5.1、および5.1.1のデバイスに影響します

編集:self.aButtonの値をログに記録することにより、キーワードnilが原因で、メモリ警告の後になっていることがわかりました。weakしかし、どうすればそれを再割り当てできますか?SDKはそれ自体でそれを行うべきではありませんか?そして、なぜaGUIDまだ利用可能ですか?

編集:ここにログがあります。aButtonがnilになることがわかります。

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

ios - iPadSplitViewControllerのメモリ警告によりマスタービューで問題が発生する

次の機能を備えたiPadSplitViewControllerアプリケーションがあります。

  • マスター(左側)のビューコントローラーは、shouldHideViewControllerデリゲートメソッドでYESを返すことにより、縦向きと横向きの両方で非表示になります
  • マスタービューコントローラーにはタブバーコントローラーが含まれています
  • 複数のマスター詳細マネージャーを使用して、マスタータブバーでのユーザーの選択に基づいて詳細ビューコントローラーの交換を管理します

アプリケーションがメモリ警告を受信した後にのみ発生する問題があります。マスタービューがスライドインすると(スワイプまたは左バーボタンをタップして)、ビューは事実上空になります。つまり、テーブルビューは含まれず、テーブルビューがあるべき半透明の背景だけが含まれます。タブバーで他のビューをタップすると、マスタービューが正しく読み込まれます。次にタップして問題ビューに戻ると、正しく表示されるようになりました。

もともと私は、ビューが空であるだけでなく、フルスクリーン用のサイズになっているという別の問題を抱えていました。私はこのSOの質問で提案された解決策を介してサイズの問題を修正することができました-解決策では、「メモリ警告を受信すると、View Controllerが解放されるため、再び表示されると、サイズが取得されるようです。フルスクリーンの親ビューからです。したがって、フレームが読み込まれるたびにフレームをリセットする必要があります。」

コードにブレークポイントを設定することで、メモリ警告の後にマスタービューに最初にアクセスしようとしたときに、ViewDidLoadイベントが呼び出された(メモリ警告がなかった場合は発生しません)が、ViewDidAppearイベントとViewWillAppearイベントが発生したことを確認できます。呼び出されません。そのため、アプリはメモリ警告の後にマスタービューをリロードする必要があることを認識していますが、何らかの理由でマスタービューが表示されていないようです。

メモリ警告の後にビューを正しく表示する方法を見つけるのに苦労しています。または、メモリ警告を受信したときにマスタービューがアンロードされないようにするためにすべきことはありますか?

更新:メモリ警告時にマスタービューが表示されている場合、この問題は発生しないことも確認しました。

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

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)アニメーション配列を設定してアニメーションを再生しています...

この配列は、次のように単純に使用します。

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

iphone - メモリの警告とアプリのクラッシュ-問題の原因が見つかりません

多くのメモリ警告を受け取った後、私のアプリは常にクラッシュしています。コードの長さは約3万行であるため、問題を追跡するのは簡単ではありません。私はそれを機器で実行しましたが、いくつかの段階で最大30MBのライブバイトがありますが、私が知る限り、これはそれほど問題にはならないはずです。メモリリークはごくわずかであるため、問題になることはありません。アプリを長時間プレイするとクラッシュする傾向があります。機器には、私が常に受け取っているメモリ警告の原因を追跡するのに役立つものはありません。これを行う他の可能な方法はありますか?明らかな理由でこれが起こらないことが非常に重要です。どんな助けでも大歓迎です。

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

iphone - iPhoneで画像やカメラを操作する際のメモリの問題

私のアプリケーションでは、ユーザーはカメラで撮影した最大8つの画像を追加し、それらを1つずつサーバーにアップロードできます。私の問題は、最初の写真を撮ったときでさえ、メモリ警告が表示されることです。これはもちろん、アプリに表示されていないビューを解放するように強制します。

写真を処理するためのベストプラクティスのアプローチは何ですか?メモリを使い果たすことなく、アップロードされるまでそれらを保持するにはどうすればよいですか?

私の目的は、メモリの警告を回避することです。

前もって感謝します。

/ Esben

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

objective-c - コア データ障害とメモリ警告

NSManagedObject はメモリの警告を監視し、エラーになりますか? メモリ不足の状況でこの種のことを行うことになっていますか?

Core Data でメモリを保持するためのガイドラインはありますか?

0 投票する
3 に答える
1528 参照

ios - サーバーに 100 枚を超える画像をアップロードしているときに、メモリ警告が表示され、アプリがクラッシュしました

次のコードを使用してサーバーに 100 を超える画像をアップロードしていますが、いくつかの画像をアップロードした後にメモリ警告を受け取りました。助けてください..サーバーに画像をアップロードするためのコードは次のとおりです。

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

ios - 機器とリーク

アプリケーションがあり、プロファイリングしています。私はインストルメントにまったく慣れておらず、iOS開発者でもあります。私はios6を使用していますが、非常に珍しいリークがあります。UIImageにカテゴリを作成し、capinsetsを使用するための画像を返すためのヘルパーメソッドを追加しました。私のカテゴリは次のようになります、

機器は、同じ場所のこの領域で3/4のリークを示しており、その理由を理解できませんでした。それで、カテゴリ内で作成した新しい画像をリリースする必要があります。リリースした場合、何を返しますか?ここでメモリリークが発生している理由を教えてください。

そして、私はそれをこのように使用しました。

この方法でこの方法を使用することに何か問題がありますか?