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?

È stato utile?

Soluzione

Usa : e scrivi come sotto

 [self performSelector:@selector(explodeBomb:) withObject:obj ];
.

Poiché il tuo metodo explodeBomb ha un argomento in modo da specificare :

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top