2011-01-26 37 views
0

後,我需要在哪裏尋找檢測是什麼原因導致與消息EXC_BAD_ACCESS,這應該涉及到崩潰的暗示「留住 - 釋放」的問題。它發生在事件viewDidAppear後的片刻。iPhone EXC_BAD_ACCESS的viewDidAppear事件

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會幫助找到問題的對象。

編輯:要激活NSZombie做到以下幾點:

  1. 獲取可執行的信息。
  2. 轉到參數選項卡。
  3. 在「變量在環境中進行設置:」部分添加:

名稱:NSZombieEnabled 值:是

然後運行你的應用程序像往常一樣,當它崩潰,它會告訴你哪個釋放對象收到釋放消息。

+0

的消息就沒有那麼詳細,但它做的工作,我設法找出問題。謝謝。 – IssamTP 2011-01-26 13:22:34

3

不是一個答案,而是一個提示 - 編譯模擬器的應用程序,啓動儀器並添加內存分配工具與庫中的「NSZombies enabled」。在樂器中運行應用程序,直到您收到關於將消息發送給殭屍對象的通知。

+0

謝謝殭屍做的工作:) – IssamTP 2011-01-26 13:24:05