Je me demande simplement s'il existe un moyen d'appeler une méthode où je construis le nom de la méthode à la volée avec une chaîne.
par exemple. J'ai une méthode appelée loaddata
-(void)loadData;
d'appeler cela, je l'appellerais normalement comme
[self loadData];
Mais je veux pouvoir l'appeler dynamiquement avec une chaîne par exemple.
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
Ceci est un exemple stupide mais j'espère que vous comprendrez mon point. Je l'utilise pour les classes de liaison de données que je configure pour mon application IPad. Difficile à expliquer mais pour le faire fonctionner, j'ai besoin de savoir comment appeler une méthode avec une chaîne.
Des idées?
Merci
Vous pouvez essayer quelque chose comme
SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
Vous pouvez utiliser la fonction objc_msgSend. Il faut deux paramètres, le récepteur et le sélecteur pour lui envoyer:
objc_msgSend(self, someSelector);
Vous devrez transformer votre chaîne en sélecteur approprié en utilisant NSSelectorFromString
:
NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);
La méthode prend également un nombre variable d'arguments, vous pouvez donc envoyer des messages avec n'importe quel nombre d'arguments.
NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);
Vous avez besoin de NSSelectorFromString
.