Core data save triggered a non relevant exception about UICalloutBarOverlay?
2010-08-05 00:34:49.186 Holidays[30485:207] -[UICalloutBarOverlay controllerWillChangeContent:]: unrecognized selector sent to instance 0x5b53540
2010-08-05 00:34:49.188 Holidays[30485:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UICalloutBarOverlay controllerWillChangeContent:]: unrecognized selector sent to instance 0x5b53540'
*** Call stack at first throw:
(
0 CoreFoundation 0x02587919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x026d55de objc_exception_throw + 47
2 CoreFoundation 0x0258942b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x024f9116 ___forwarding___ + 966
4 CoreFoundation 0x024f8cd2 _CF_forwarding_prep_0 + 50
5 CoreData 0x0012e1fb -[NSFetchedResultsController(PrivateMeth开发者_StackOverflow社区ods) _managedObjectContextDidChange:] + 1867
6 Foundation 0x00215c1d _nsnote_callback + 145
7 CoreFoundation 0x0255fcf9 __CFXNotificationPost_old + 745
8 CoreFoundation 0x024df11a _CFXNotificationPostNotification + 186
9 Foundation 0x0020b7c2 -[NSNotificationCenter postNotificationName:object:userInfo:] + 134
10 CoreData 0x0006a519 -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:] + 89
11 CoreData 0x000d9b33 -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:] + 259
12 CoreData 0x0004cf78 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 1352
13 CoreData 0x00086a15 -[NSManagedObjectContext save:] + 149
14 Holidays 0x0000977b -[UIEventDetailController save:] + 752
15 UIKit 0x004abe14 -[UIApplication sendAction:to:from:forEvent:] + 119
16 UIKit 0x006b314b -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 156
17 UIKit 0x004abe14 -[UIApplication sendAction:to:from:forEvent:] + 119
18 UIKit 0x005356c8 -[UIControl sendAction:to:forEvent:] + 67
19 UIKit 0x00537b4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
20 UIKit 0x005366f7 -[UIControl touchesEnded:withEvent:] + 458
21 UIKit 0x004cf2ff -[UIWindow _sendTouchesForEvent:] + 567
22 UIKit 0x004b11ec -[UIApplication sendEvent:] + 447
23 UIKit 0x004b5ac4 _UIApplicationHandleEvent + 7495
24 GraphicsServices 0x02dedafa PurpleEventCallback + 1578
25 CoreFoundation 0x02568dc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
26 CoreFoundation 0x024c9737 __CFRunLoopDoSource1 + 215
27 CoreFoundation 0x024c69c3 __CFRunLoopRun + 979
28 CoreFoundation 0x024c6280 CFRunLoopRunSpecific + 208
29 CoreFoundation 0x024c61a1 CFRunLoopRunInMode + 97
30 GraphicsServices 0x02dec2c8 GSEventRunModal + 217
31 GraphicsServices 0x02dec38d GSEventRun + 115
32 UIKit 0x004b9b58 UIApplicationMain + 1160
33 Holidays 0x000021ba main + 84
34 Holidays 0x0000215d start + 53
)
terminate called after throwing an instance of 'NSException'
What I did is just save an object. Any idea? I am not using UICalloutBarOverlay at all. It seems that some random functions will be triggered, this is only one case.
Here are some possible exceptions I have seen for this special case:
-[__NSCFDictionary controllerWillChangeContent:]: unrecognized selector sent to instance 0x5b3e1e0
-[UIImageView controllerWillChangeContent:]: unrecognized selector sent to instance 0x5e3ab10
-[CALayer controllerWillChangeContent:]: unrecognized selector sent to instance 0x5b377d0
(gdb) continue
In this thread NSFetchedResultsController based Table View always fails on SECOND insert of entity, the error is exactly what I see here.
This is the clue:
-[NSNotificationCenter postNotificationName:object:userInfo:]
That means that a notification is getting posted and one of the receivors of that notification is gone; most likely released. For every -addObserver:
call in your code, you need to match it with a -removeObserver:
. The NSNotificationCenter
will not retain the observer it is associated with but will keep a strong referene to it.
This is not an answer, but perhaps a solution to those, like me, who confronted this issue and struggled for hours with the solution. My case is much like that of the poster, I was crashing when changing an attribute in a detail view with -[CALayer controllerWillChangeContent:]: unrecognized selector sent to instance
.
Sza's comment pointed me in the right direction. I had used the code from Red Artisan here but changed the init method in the appDelegate from initWithStyle
to initWithNibName
and then did initWithNibName
again in the controller's class file (D'oh!).
Again, not a specific answer but hopefully will assist someone down the line.
精彩评论