performSelector wirft ungültiges Argument, warum?
-
21-12-2019 - |
Frage
Diese Codezeile funktioniert perfekt
[self explodeBomb:obj];
aber wenn ich es durch die folgende Zeile ersetze, erhalte ich eine NSInvalidArgument-Ausnahme, deren Grund ein nicht erkannter Selektor ist.
[self performSelector:@selector(explodeBomb) withObject:obj ];
Die Definition der Methode lautet wie folgt:
-(void)explodeBomb:(SKNode *)bomb
Ich weiß, das muss daran liegen, dass ich etwas Grundlegendes nicht verstehe.Aber warum kann ich die Methode ohne Probleme direkt aufrufen, aber wenn ich versuche, die zu verwenden performSelector
es explodiert?Für den Datensatz ist obj als ID definiert.Ich habe versucht, die Signatur von explosionBomb zu ändern, um eine ID zu übernehmen und sie dann explizit in die Methode umzuwandeln, aber das hat die gleiche Ausnahme ausgelöst.Weiß jemand, was zum Teufel ich falsch mache?
Lösung
Verwenden :
und schreibe wie unten
[self performSelector:@selector(explodeBomb:) withObject:obj ];
Da deine Methode explodeBomb
hat ein Argument, also müssen Sie es angeben :