我想解釋下面的這個崩潰日誌,但我不確定是否正確理解它。 objc_msgSend()
表示我正在發送消息給已經處理的東西。所以基本上數據源在tableview可以繪製其單元格之前消失?解釋崩潰日誌目標C
我怎樣才能找到這個問題的原因?我試過使用atos
工具來查找它返回的十六進制的崩潰位置,但無濟於事。
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000020
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: tableView:objectValueForTableColumn:row:
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x93f89ed7 objc_msgSend + 23
1 com.apple.AppKit 0x936143ea -[NSTableView preparedCellAtColumn:row:] + 335
2 com.apple.AppKit 0x9362e8bc -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 56
3 com.apple.AppKit 0x9362d92a -[NSTableView drawRow:clipRect:] + 1131
4 com.apple.AppKit 0x9362d362 -[NSTableView drawRowIndexes:clipRect:] + 360
5 com.apple.AppKit 0x9362bd3b -[NSTableView drawRect:] + 1144
6 com.apple.AppKit 0x936218fd -[NSView _drawRect:clip:] + 3721
7 com.apple.AppKit 0x9361efc9 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 2217
8 com.apple.AppKit 0x9361f95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
9 com.apple.AppKit 0x9361f95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
10 com.apple.AppKit 0x9361f95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
11 com.apple.AppKit 0x9361f95c -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4668
12 com.apple.AppKit 0x9361e55b -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 265
13 com.apple.AppKit 0x9361aea2 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3309
14 com.apple.AppKit 0x9357ba57 -[NSView displayIfNeeded] + 818
15 com.apple.AppKit 0x93544d40 -[NSWindow displayIfNeeded] + 204
16 com.apple.AppKit 0x9357628a _handleWindowNeedsDisplay + 696
17 com.apple.CoreFoundation 0x94f0ae02 __CFRunLoopDoObservers + 1186
18 com.apple.CoreFoundation 0x94ec6d8d __CFRunLoopRun + 557
19 com.apple.CoreFoundation 0x94ec6464 CFRunLoopRunSpecific + 452
20 com.apple.CoreFoundation 0x94ec6291 CFRunLoopRunInMode + 97
21 com.apple.HIToolbox 0x94188004 RunCurrentEventLoopInMode + 392
22 com.apple.HIToolbox 0x94187cf7 ReceiveNextEventCommon + 158
23 com.apple.HIToolbox 0x94187c40 BlockUntilNextEventMatchingListInMode + 81
24 com.apple.AppKit 0x9354c78d _DPSNextEvent + 847
25 com.apple.AppKit 0x9354bfce -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
26 com.apple.AppKit 0x9350e247 -[NSApplication run] + 821
27 com.apple.AppKit 0x935062d9 NSApplicationMain + 574
28 ...yapp.com 0x00003032 0x1000 + 8242
這裏的問題:它只有崩潰某些機器上,並排除地雷。 '和它檢測到該陣列是nil,它之前將它傳遞給tableview中創建它:提供動力的的tableview陣列,當所述的tableview調用'objectValueForTableColumn的方式受到保護。除了'dealloc',我不會在任何地方釋放它們。 – Pripyat 2011-03-19 08:50:33
我懷疑這是過度發佈的對象價值 - 更可能是數據源本身。 – 2012-11-11 02:46:33