我被一個我無法弄清楚如何調試的bug所困擾。基本上我在模擬器上運行我的代碼,一切都很好。手機上的Debuggin iPhone應用程序
但是,當我轉到實際設備時,出現EXC_BAD_ACCESS錯誤。不幸的是,當在調試器下的手機上運行時,該死的事情工作得很好,所以我無法判斷錯誤發生的位置。
我確實得到了一個我無法重現的堆棧跟蹤,所以我很確定我的代碼中導致問題的那行是這一行(但我不能爲我的生活弄清楚這怎麼可能):是
[[NSNotificationCenter defaultCenter] postNotificationName:@"SubscriberChanged" object: nil];
實際的錯誤上objc_msgSend這一行約四幀以下,但其似乎是在iPhone SDK的一部分代碼,所以我沒有源檢查它。
任何人都可以給我幾個關於如何去找出這個問題的方法嗎?我有一個最後期限運送這個東西,我不能讓它像這樣出去......
我終於成功地在調試器中重現了這一點。我得到的堆棧跟蹤如下:
#0 0x30011940 in objc_msgSend()
#1 0x3054dc80 in _nsnote_callback()
#2 0x3024ea58 in _CFXNotificationPostNotification()
#3 0x3054b85a in -[NSNotificationCenter postNotificationName:object:userInfo:]()
#4 0x3054dbc0 in -[NSNotificationCenter postNotificationName:object:]()
#5 0x000027c6 in -[My2CentsAppDelegate handleMOCChange:] (self=0x1159d0, _cmd=0x2bf90, notification=0x147400) at /Users/sdussin/Desktop/UPOD Research LLC/Development/My2Cents/Classes/My2CentsAppDelegate.m:52
#6 0x3054dc80 in _nsnote_callback()
#7 0x3024ea58 in _CFXNotificationPostNotification()
#8 0x3054b85a in -[NSNotificationCenter postNotificationName:object:userInfo:]()
堆棧跟蹤中的幀#5對應於上面的行。
原來的通知是問題。我顯然在我的NIB中有幾個視圖對象的實例。當他們得到加載時,他們每個都註冊通知,然後只保留其中的一個。其他人被釋放,但未能取消通知。 感謝所有... – Steve 2010-02-01 20:09:51