Eu criei um botão e adicionei uma ação para ele, mas assim que ele foi invocado, eu recebi este erro:
-[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance
0x3d03ac0 2010-03-16 22:23:58.811
Money[8056:207] *** Terminating app
due to uncaught exception
'NSInvalidArgumentException', reason:'*** -[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance 0x3d03ac0'
Este é o meu código:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom];
numberButton.frame = CGRectMake(10, 435, 46, 38);
[numberButton setImage:[UIImage imageNamed:@"one.png"] forState:UIControlStateNormal];
[numberButton addTarget:self action:@selector(numberButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview: numberButton];
}
return self;
}
-(IBAction)numberButtonClick:(id)sender{
NSLog(@"---");
}
Parece que você'não está gerenciando corretamente a memória do view controller e está sendo desalocada em algum momento - o que faz com que o método numberButtonClicked:
seja enviado para outro objeto que agora está ocupando a memória que o view controller estava ocupando anteriormente...
Certifique-se de que você'está retendo/liberando corretamente o seu controlador de visão.
Para aqueles que chegam aqui via Google como eu, que provavelmente pertence mais ao Xcode 4.2+/iOS 5+ mais, o que com o ARC. Tive o mesmo erro " Seletor não reconhecido enviado para a instância". No meu caso eu tinha um UIButton's target action set up to pass itself as the sender parameter, mas mais tarde percebi que eu não precisava't precisava dele e removi isso no código. Então, algo como:
- (IBAction)buttonPressed:(UIButton *)sender {
Foi mudado para:
- (IBAction)buttonPressed {
O botão direito do mouse no UIButton em questão mostrou que o evento Touch Up Inside estava associado ao botão View ControllersPressed: method. Removendo-o e reatribuindo-o ao método modificado, funcionou um tratamento.
Esta foi a melhor resposta do Google para este problema, mas eu tinha uma causa/resultado diferente - pensei que eu'adicionaria os meus dois cêntimos no caso de outros se depararem com este problema.
Tive um problema semelhante esta manhã. Descobri que se você clicar com o botão direito do mouse no item UI que lhe dá o problema, você pode ver quais conexões foram criadas. No meu caso, eu tinha um botão ligado até duas ações. Apaguei as acções do menu do botão direito do rato e voltei a ligá-las e o meu problema foi resolvido.
Por isso, certifica-te de que as tuas acções estão bem interligadas.