2011-01-26 11 views
0

メッセージのEXC_BAD_ACCESSでクラッシュする原因を検出するためのヒントを探す必要があります。これは「保持 - 解放」に関するものです。 viewDidAppearイベント後すぐに発生します。viewDidAppearイベント後のiPhone EXC_BAD_ACCESS

0 0x01285a63 in objc_msgSend 
1 0x0580e400 in ?? 
2 0x0105fb8d in _ CFAutoreleasePoolPop 
3 0x00022443 in -[NSAutoreleasePool release] 
4 0x002d3bf2 in _ UIApplicationHandleEvent 
5 0x018cca36 in PurpleEventCallback 
6 0x01105064 in __ CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 
7 0x010656f7 in __CFRunLoopDoSource1 
8 0x01062983 in __CFRunLoopRun 
9 0x01062240 in CFRunLoopRunSpecific 
10 0x01062161 in CFRunLoopRunInMode 
11 0x002cafa8 in -[UIApplication _run] 
12 0x002d742e in UIApplicationMain 
13 0x00001ca0 in main at main.m:14 

奇妙なことは、それがはただ時々、常にを起こらないということです。私は最初に起動されたクラス全体をチェックしましたが、この問題の原因となるものは何も見えません。それに加えて、私がデバッガを使ってステップバイステップで掘り下げれば、問題は決して起こらないと思われます。おそらくシミュレータの問題でしょうか?

答えて

3

autoreleaseプールがすでに割り当て解除されているオブジェクトを解放しようとしているようです。私はNSZombieが問題のオブジェクトを見つけるのを助けるだろうと思う。

EDIT: NSZombieを有効にするには次のようにします。

  1. は、実行可能ファイルの情報を取得します。
  2. [引数]タブに移動します。そして、YES

    いつものようにあなたのアプリケーションを実行し、それがクラッシュしたときに、それはあなたにどのを教えてください:セクションの追加:

名:NSZombieEnabled 値:「環境に設定される変数」に

  • 割り当て解除されたオブジェクトは解放メッセージを受信しました。

  • +0

    メッセージはそれほど詳細ではありませんでしたが、それは仕事でした、私は問題を見つけることができました。ありがとうございました。 – IssamTP

    3

    答えはありませんが、ヒント - シミュレータ用のアプリケーションをコンパイルし、Instrumentsを起動し、ライブラリから "NSZombies enabled"を使用してメモリ割り当てツールを追加します。ゾンビオブジェクトに送信されたメッセージの通知が表示されるまで、楽器でアプリを実行します。

    +0

    ありがとう、ゾンビは仕事をした:) – IssamTP