2

デバイスで実行しているときにアプリが(ちなみにランダムに)クラッシュしますが、クラッシュは100%再現できません。ただし、シミュレータではなく、デバイスでのみ発生するようです。

NSZombiesを使用してシミュレーターで実行すると、問題が発生することはありません。誰かが以下の私のポイントに光を当てることができますか?

  • デバイスのメモリが制限されています。これが原因でクラッシュしている可能性があります。
  • クラッシュを引き起こす大きなメモリ割り当てとは何と見なされますか?
  • メモリリーク/大きな割り当てはメモリ破損を引き起こしますか?
  • 私のクラッシュはすべて常にEXC_BAD_ACCESSですが、私が言ったように、シミュレーターでは決して起こらないので、ゾンビを実行することはできません。(または別の方法はありますか?)

また、シミュレータでメモリ不足の警告をシミュレートして、問題が発生しているかどうかを確認しました。

これは私を狂わせています。どんな助けでもいただければ幸いです。

4

1 に答える 1

0
I know where it crashes but I need to know which other classes released this object.

オブジェクトの -[release] -[autorelease] および -[retain] をオーバーライドし (または、どのオブジェクトがわからない場合は NSObject に対してこれを行うことができます)、それらをログに記録し、ブレークポイントを設定します。

各時点でどのオブジェクトが解放されているかを特定し、タイムスタンプ/オブジェクト ID/retaincount をログ ステートメントに追加すると、すべてのデータをスプレッドシートに投入して、Instruments と同じ種類のデータを取得できる可能性があります。あなたを与える。

3.0 用にビルドしなければならないのは残念です。3.x を使用する人はもうほとんどいません。ARC は (すべての問題に対する特効薬ではありませんが) 非 ARC よりもはるかに優れています。

また、ヒントとして、シミュレーターからアプリを削除し、再インストールしてください。プロジェクトでバンドル リソースの一部が見つからないという問題がありましたが、ビルド間でシミュレーターがハングしていました。プロジェクトに存在しない .xib を読み込もうとすると、クラッシュすることがわかりました...

于 2012-07-09T17:56:18.153 に答える