In my application I have taken certain table views, their data gets refreshed in background thread if a user makes and save changes.
Problem is-
when user is making some edit to a table row and its data gets refreshed in background, due to changes done by some other user, then the application crashes.
Can anyone suggest me some solution for it?
Below is the portion of crash report :
Process: RCS [153]
Path: /Applications/RCS.app/Contents/MacOS/RCS
Identifier: com.tprf.RCS
Version: 1.5.10 build-0212 (1.5.10)
Code Type: X86 (Native)
Parent Process: launchd [96]
Date/Time: 2010-10-07 11:40:15.595 -0700
OS Version: Mac OS X 10.6.4 (10F569)
Report Version: 6
Interval Since Last Report: 297915 sec
Crashes Since Last Report: 2
Per-App Interval Since Last Report: 213604 sec
Per-App Crashes Since Last Report: 1
Anonymous UUID: 4037E18D-81EF-461F-95D5-9E7D7C5701A6
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000c0e9bb1a
Crashed Thre开发者_开发知识库ad: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: objectForKey:
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x97a4aedb objc_msgSend + 27
1 com.apple.AppKit 0x90c558ec -[NSTableView _delegateWillDisplayCell:forColumn:row:] + 62
2 com.apple.AppKit 0x90bd29f5 -[NSTableView preparedCellAtColumn:row:] + 1362
3 com.apple.AppKit 0x90becacc -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 56
4 com.apple.AppKit 0x90bebb3a -[NSTableView drawRow:clipRect:] + 1131
5 com.apple.AppKit 0x90beb572 -[NSTableView drawRowIndexes:clipRect:] + 360
6 com.apple.AppKit 0x90be9f4b -[NSTableView drawRect:] + 1144
7 com.apple.AppKit 0x90bdfa36 -[NSView _drawRect:clip:] + 3510
8 com.apple.AppKit 0x90bde6d4 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1600
9 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
10 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
11 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
12 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
13 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
14 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
15 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
16 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
17 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
18 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
19 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
20 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
21 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
22 com.apple.AppKit 0x90bdea09 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2421
23 com.apple.AppKit 0x90bdcbf3 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 711
24 com.apple.AppKit 0x90bdc767 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 265
25 com.apple.AppKit 0x90bd90ae -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3309
26 com.apple.AppKit 0x90b39d3f -[NSView displayIfNeeded] + 818
27 com.apple.AppKit 0x90b03050 -[NSWindow displayIfNeeded] + 204
28 com.apple.AppKit 0x90b34572 _handleWindowNeedsDisplay + 696
29 com.apple.CoreFoundation 0x996812c2 __CFRunLoopDoObservers + 1186
30 com.apple.CoreFoundation 0x9963d9bd __CFRunLoopRun + 557
31 com.apple.CoreFoundation 0x9963d094 CFRunLoopRunSpecific + 452
32 com.apple.CoreFoundation 0x9963cec1 CFRunLoopRunInMode + 97
33 com.apple.HIToolbox 0x905ecf9c RunCurrentEventLoopInMode + 392
34 com.apple.HIToolbox 0x905ecc8d ReceiveNextEventCommon + 158
35 com.apple.HIToolbox 0x905ecbd6 BlockUntilNextEventMatchingListInMode + 81
36 com.apple.AppKit 0x90b0aa89 _DPSNextEvent + 847
37 com.apple.AppKit 0x90b0a2ca -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
38 com.apple.AppKit 0x90acc55b -[NSApplication run] + 821
39 com.apple.AppKit 0x90ac45ed NSApplicationMain + 574
Thanks,
Miraaj
The crash log says:
Application Specific Information:
objc_msgSend() selector name: objectForKey:
This means that you crashed while trying to send an objectForKey:
message.
It's not clear from the crash log whether this is your implementation of tableView:willDisplayCell:forTableColumn:row:
that is crashing, or NSTableView looking something up in order to send that delegate message. If it's the former, then you're probably not retaining or copying a dictionary where you should. If it's the latter, then you're probably not retaining the object that is the table view's delegate where you should.
Either way, the Zombies template in Instruments will tell you what object it was trying to send a message to, and what release and autorelease messages the object received. From there, you can work out which release or autorelease message was the undue one (if any), or which object that should be retaining the object isn't.
精彩评论