performSelector lançando argumento inválido, por quê?
-
21-12-2019 - |
Pergunta
Esta linha de código funciona perfeitamente
[self explodeBomb:obj];
mas se eu substituí-lo pela linha a seguir, recebo uma exceção NSInvalidArgument, cujo motivo é um seletor não reconhecido.
[self performSelector:@selector(explodeBomb) withObject:obj ];
A definição do método é a seguinte:
-(void)explodeBomb:(SKNode *)bomb
Eu sei, deve ser eu que não entendo algo fundamental.Mas por que consigo chamar o método diretamente sem problemas, mas quando tento usar o método performSelector
isso explode?Para o registro, obj é definido como um ID.Tentei alterar a assinatura do explodeBomb para pegar um ID e depois convertê-lo explicitamente dentro do método, mas isso gerou a mesma exceção.Alguém sabe o que diabos estou fazendo de errado?
Solução
Usar :
e escreva como abaixo
[self performSelector:@selector(explodeBomb:) withObject:obj ];
Desde o seu método explodeBomb
tem um argumento, então você deve especificar :