What does it mean "unrecognized selector sent to instance"
in Xcode
?
It means, method is not defined or on the other-way, calling a method on the wrong object.
classic example of this error is missing of ':' in selector call.
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self
action:@selector(DatePickerDoneClick)];
Here,
action:@selector(DatePickerDoneClick:)
is expected rather than
action:@selector(DatePickerDoneClick)
If you've deleted and re-created buttons on the Storyboard, you may have the button linked to two different methods: the old (deleted) one, and the new one. This has happened to me many times.
To fix: 1) In XCode/IB, view the Storyboard. 2) Click on the button that is causing the exception. 3) On the far-right panel, click the 'connector' icon. (A circle with an arrow in it, as of Apr-2015). 4) Assuming you're linking to the action "Touch Up Inside", make sure only ONE method is linked. An [x] will appear next to each, so if there are two, kill the one that no longer exists.
In my case it means I did not understand (for two days) a very simple requirement of the handler (selector, function): I had left off the ...:(NSNotification*)notification... in my selector (function).
In the end it is just a self.stupidMistake (or programming tired while trying to understand a new thing in iOs/xCode). I read the docs at apple, I read many, many here at stackoverflow and read all kinds of other pages from the search results and just kept overlooking the fact that I had: in the viewDidLoad:
[[NSNotificationCenter defaultCenter] addOberserver:self selector:@selector(myHandler:) name:@"UIApplicationWillResignActiveNotification" object:nil];
in the .h (declaration) and .m (real code) I had invented:
-(void)myHandler { ... }
This generated the unrecognized selector sent to instance (crash and debug output) at runtime (no errors or warnings in xcode). Then I spent almost two whole days trying to figure out the error and the error was:
-(void)myHandler:(NSNotification*)notification { ... }
Hope it helps anyone else stuck - it is a syntax thing (your Selector or Handler or Function or whatever you want to call it) must take a (NSNotification*) 'object' as a parameter whether you use it or not; and xcode (4.2 w/iOs SDK 5.0) does not generate any errors or warnings about this 'mistake'.
I think this error is due to calling a function in class which is not declared in the class.
It means that you have called a method on an object which does not support that method.
The reason it says 'unrecognised selector' is that method invocation is implemented by a message sending mechanism. The part of the message that contains the method name is called the selector.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With