我正在測試我的應用程序,並突然它有EXC_BAD_ACCESS。現在這已經成爲一個半正規的事情,發生在一些構建上,而不是其他構件上。它還會在調試器中吐出很多錯誤,比如objc_msgSend_vtable5什麼會導致這樣的奇怪問題?不可預知的EXC_BAD_ACCESS和objc_msgSend_vtable5
回答
看起來像是我的錯。爲了解決這個問題,我需要做的就是致電retain
。
更確切地說,你有一個物體,你堅持但已經釋放,而不是保留。請參閱「內存管理編程指南」:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/調試這類事情的方法是使用Instruments的殭屍工具。 – 2010-09-18 01:14:18
我最近剛剛得到了同樣的錯誤。簡短版本:它發生是因爲我有一個對象具有一個已經發布的代理。確保您可以控制您分配的任何代理的生命週期,無論是通過Interface Builder還是其他代理。
長版本:當Objective-C運行時試圖向最終被釋放和釋放的對象發送消息時發生錯誤。這與將消息發送給無對象(完全有效的Objective-C操作)不同。在這些情況下,運行時間知道該對象爲零並相應地作出響應。相反,在這種情況下,Objective-C認爲它有一個真實,有效的對象與一個不包含對象的地址進行通信並將消息發送到一個地址。
在我的情況下,我有一個NSTextView類型的對象,它由Interface Builder連接到一個委託。當一個視圖或視圖控制器用NIB/XIB文件構建時,Cocoa按照指示掛鉤所有子視圖,包括連接你可能擁有的任何代理。
我的錯誤是我創建了一個NSView的子類,使它成爲NSTextViewDelegate,然後告訴Interface Builder將子NSTextView連接到該父視圖。但是,在我使用自己的NSViewController進行的各種操作中,我告訴Cocoa從視圖層次結構中刪除了NSView,並在稍後重新插入。
AppKit 特別是告訴您不要保留任何IBOutlets,但您可以通過簡單的賦值來保留這些IBOutlet。這是因爲AppKit爲你處理這些內存管理。我不知道通過讓視圖離開視圖層次一段時間,我觸發了AppKit來清理NSView。由於只有AppKit保留了視圖對象本身,所以關閉它進入以太網。釋放。
因爲我沒有直接控制NSTextView的委託,所以NSTextView現在指向一個已經發布的委託,即使它有一個有效的父視圖。下一次它試圖向其委託發送消息時,Objective-C運行時就會崩潰。
因此,確保委託人是您擁有的委託人,或者至少知道在不合時宜的情況下永遠不會發布委託人。
我有一個類似的錯誤,如果發生這種情況,殭屍對象工具將是一個很好的方式來追蹤哪裏出了問題。看到這個答案的更多細節:http://stackoverflow.com/questions/11170614/viewcontroller-respondstoselector-message-sent-to-deallocated-instance-crash – 2013-01-27 10:46:57
- 1. NotSerializableException,不可預知?
- 2. 不可預知的結果
- 3. 不可預知的變化
- 4. 不可預知的輸出
- 5. 不可預知的雙
- 6. ElasticSearch和搜索文檔不可預知
- 7. Titanium中的不可預知的z-index
- 8. Pyparsing - 不可預知的令牌順序
- 9. 滾動到不可預知的錨點
- 10. 不可預知的外部依賴性
- 11. 不可預知的布爾比較C++
- 12. 測試不可預知的功能
- 13. 不可預知的SceneKit行爲?
- 14. Qt。 QDateTime不可預知的行爲與時區和addSecs
- 15. Tableview和自定義單元格不可預知的行爲
- 16. Symfony2 Twig Asset Base_Url正在不可預知?
- 17. Firefox CSS位置不可預知行爲
- 18. Grails /休眠緩存不可預知
- 19. s3文件下載不可預知
- 20. wxWidgets不可預知Seg故障
- 21. CUBLAS不可預知地工作
- 22. 可靠地解析不可預知的CSV格式
- 23. 的NSString,EXC_BAD_ACCESS和stringByAppendingString
- 24. VBA排序降序不排序,不可預知的循環
- 25. 收到的事件和BasicConsume之間的不可預知的呼叫順序
- 26. 使用drakma異步和cl異步的不可預知的行爲
- 27. main()的遞歸的不可預知的輸出
- 28. Nsarray摘要不可用(EXC_BAD_ACCESS代碼1)
- 29. jQuery中的不可預知的鼠標懸停行爲
- 30. Python的fuzzywuzzy返回不可預知的結果
'objc_msgSend_vtable5'不是錯誤信息;它是Objective-C運行時中函數的名稱。堆棧跟蹤,這是你正在尋找的地方,只說明你的應用程序在崩潰時正在做什麼;它沒有提到它是什麼樣的崩潰。 – 2010-09-18 01:15:44