performSelector lance un argument invalide, pourquoi ?
-
21-12-2019 - |
Question
Cette ligne de code fonctionne parfaitement
[self explodeBomb:obj];
mais si je le remplace par la ligne suivante, j'obtiens une exception NSInvalidArgument, la raison étant un sélecteur non reconnu.
[self performSelector:@selector(explodeBomb) withObject:obj ];
La définition de la méthode est la suivante :
-(void)explodeBomb:(SKNode *)bomb
Je sais, c'est sûrement moi qui ne comprends pas quelque chose de fondamental.Mais pourquoi je peux appeler la méthode directement sans problème, mais quand j'essaie d'utiliser le performSelector
ça explose ?Pour mémoire, obj est défini comme un identifiant.J'ai essayé de changer la signature d'exploseBomb pour prendre un identifiant, puis de le lancer explicitement dans la méthode, mais cela a généré la même exception.Quelqu'un sait ce que je fais de mal ?
La solution
Utiliser :
et écris comme ci-dessous
[self performSelector:@selector(explodeBomb:) withObject:obj ];
Depuis votre méthode explodeBomb
a un argument donc vous devez le préciser :