我正在開發一個iOS5應用程序使用ARC,我開始得到一些隨機EXEC_BAD_ACCESS崩潰,我想不出來..隨機我的意思是它是非常不可預測的:有時可能需要很長時間才能崩潰,有時候會很短。也沒有一個特定的按鈕/表格單元/等。這會引發崩潰。每個用戶交互都可能導致應用程序崩潰,但不能重複崩潰。Obj-C消息發送到釋放對象(EXEC_BAD_ACCESS),與iOS5,ARC
我試圖打開NSZombie和一些malloc調試工具。在儀器中,崩潰錯誤如下:一個Objective-C消息被髮送到地址爲:0x10bd1b40的釋放對象(殭屍)。並且參考計數日誌的最後一部分看起來像這樣:
475 CoursesFirstViewController Release 2 02:23.253.631 0 UIKit -[UINibDecoder finishDecoding]
476 CoursesFirstViewController Release 1 02:23.253.838 0 Foundation -[NSAutoreleasePool drain]
477 CoursesFirstViewController Zombie -1 02:35.752.420 0 Foundation objectHash
2,1,-1是引用計數。我不知道爲什麼它跳過0並下降到-1,導致程序崩潰(所有條目但最後都有連續的引用計數)。我也不知道objectHash是什麼。
我的應用程序包含多個功能,可以在我的主屏幕上作爲圖標訪問。 CoursesFirstViewController是其中的一個功能。總是,即使我在其他地方,它是課程第一視圖控制器和對象哈希會使應用程序崩潰。 (上面的日誌是這樣的:我在02:23離開CoursesFirstViewController(從而返回到我的應用程序的主屏幕),但在12秒後,當我在其他功能中時,應用程序崩潰),我只需要輸入CourseFirstViewController,稍微攪拌一下,然後到其他地方繼續使用該應用程序,過一會兒它就會崩潰。
我現在真的很生氣這個問題。我已經搜索了SO和Google很長一段時間,但找不到解決方案。任何幫助將非常感激。謝謝!!
您是否設法獲得堆棧跟蹤幾次發生,或者它是唯一的一次? – zneak
@zneak抱歉什麼是堆棧跟蹤?它是NSLog(@「%@」,[NSThread callStackSymbols]); ?每次崩潰日誌的最後幾行看起來像上面那樣。 – aforaudrey
在儀器中,從菜單欄中選擇查看>擴展詳細信息。然後,當您單擊引用計數日誌中的事件時,擴展詳細視圖將顯示事件發生時的調用堆棧(堆棧跟蹤)。 –