views:

32

answers:

1
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(PrivateMethods) _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 http://stackoverflow.com/questions/2242011/nsfetchedresultscontroller-based-table-view-always-fails-on-second-insert-of-enti, the error is exactly what I see here.

+1  A: 

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.

Marcus S. Zarra
@Marcus. Thanks! I have solved my problem. The reason is I created the UIViewController in my code and loaded the XIB in one method. But after I changed the initialization in the ViewDidLoad and put the release of the controller instance in the dealloc, then it worked. It seems that it is not that save to create the XIB and then load it and go back and forth?
sza
Can you rephrase this question?
Marcus S. Zarra