0

iOS4 以前の OS で正常に動作していたアプリがありましたが、iOS5 のシミュレーターで実行しようとすると、頻繁に EXC_BAD_ACCESS が表示されるようになりました。残念ながら、私は現在 xcode 4.2 を使用しており、エラーが発生したときにゾンビ オブジェクトを表示できません。

アプリが電話でクラッシュすることはありませんが、シミュレーターでは一貫してクラッシュするため、更新を送信する前にクラッシュの原因を確認したいと考えています。エラーが発生するたびに(複数のビューから発生している場合)、次のようになります

int retVal = UIApplicationMain(argc, argv, nil, nil); Thread 1: Program received signal: "EXC_BAD_ACCESS"

診断画面と変数タブの両方から NSZombie を有効にしましたが、まだ何も表示されません。意図的に同じオブジェクトを数回解放する行を didFinishLaunchingWithOptions に追加しても、起動時にこのエラーが発生しますが、NSZombie として報告されることはありません。

私は何を間違っていますか?

また、これらのエラーが発生すると、これがデバッグ ウィンドウに表示されます。これはスタック トレースのように見えますが、行番号を取得する方法はありますか?

#0  0x020b609b in objc_msgSend ()
#1  0x002ba9d0 in -[NSURLConnectionInternal initWithInfo:] ()
#2  0x002bb4df in -[NSURLConnectionInternalConnection initWithInfo:] ()
#3  0x002ba0af in -[NSURLConnection(Private) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] ()
#4  0x002ba1f6 in -[NSURLConnection initWithRequest:delegate:] ()
#5  0x002ba17b in +[NSURLConnection connectionWithRequest:delegate:] ()
#6  0x01f13d81 in +[NSObject performSelector:withObject:] ()
#7  0x001df9ef in __NSThreadPerformPerform ()
#8  0x01ee697f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#9  0x01e49b73 in __CFRunLoopDoSources0 ()
#10 0x01e49454 in __CFRunLoopRun ()
#11 0x01e48db4 in CFRunLoopRunSpecific ()
#12 0x01e48ccb in CFRunLoopRunInMode ()
#13 0x02775879 in GSEventRunModal ()
#14 0x0277593e in GSEventRun ()
#15 0x00516a9b in UIApplicationMain ()
#16 0x00055919 in main at /Volumes/Data/xxxx/Classes/internal/main.m:14
#17 0x00002d75 in start ()
4

1 に答える 1

1

通常、Instruments を使用してゾンビをデバッグするのが最も簡単です。このためのプリセット/テンプレート インストゥルメントがあります。インストゥルメントは、ゾンビにメッセージが送信されるとプログラムを停止します。これを使用して、すべての参照カウント操作を確認することもできます。

于 2011-12-12T08:35:52.177 に答える