EsecuzioneSelettore che lancia argomento non valido, perché?
-
21-12-2019 - |
Domanda
Questa linea di codice funziona perfettamente
[self explodeBomb:obj];
.
Ma se lo sostituisco con la seguente riga, ottengo un'eccezione NsinValidArGument, con il motivo per cui è un selettore non riconosciuto.
[self performSelector:@selector(explodeBomb) withObject:obj ];
.
La definizione del metodo è la seguente:
-(void)explodeBomb:(SKNode *)bomb
.
Lo so, questo deve essere io non capisco qualcosa di fondamentale.Ma perché sono in grado di chiamare il metodo direttamente senza problemi, ma quando provo a utilizzare il performSelector
che soffia?Per il record obj è definito come un ID.Ho provato a cambiare la firma di ExplodeBomb per prendere un ID e poi esplicitamente gettarlo all'interno del metodo, ma ha lanciato la stessa eccezione.Qualcuno sa cosa diavolo sto sbagliando?
Soluzione
Usa :
e scrivi come sotto
[self performSelector:@selector(explodeBomb:) withObject:obj ];
.
Poiché il tuo metodo explodeBomb
ha un argomento in modo da specificare :