Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does the error "unrecognized selector sent to instance" mean in Xcode

Tags:

xcode

What does it mean "unrecognized selector sent to instance" in Xcode?

like image 630
Wasim Avatar asked Mar 28 '11 06:03

Wasim


5 Answers

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)
like image 154
Flami Avatar answered Oct 30 '22 15:10

Flami


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.

like image 25
OfficerDave Avatar answered Oct 30 '22 14:10

OfficerDave


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'.

like image 6
Dean Wiley Avatar answered Oct 30 '22 15:10

Dean Wiley


I think this error is due to calling a function in class which is not declared in the class.

like image 5
PgmFreek Avatar answered Oct 30 '22 13:10

PgmFreek


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.

like image 4
Nick Moore Avatar answered Oct 30 '22 14:10

Nick Moore