Comment puis-je créer dynamiquement un sélecteur à l'exécution avec Objective-C?


Answers

Selon la documentation de XCode, votre code source est correct.

Il est plus efficace d'affecter des valeurs aux variables SEL lors de la compilation avec la directive @selector (). Cependant, dans certains cas, un programme peut avoir besoin de convertir une chaîne de caractères en un sélecteur lors de l'exécution. Cela peut être fait avec la fonction NSSelectorFromString:

setWidthHeight = NSSelectorFromString(aBuffer);

Edit: Bummer, trop lent. : P

Question

Je sais comment créer un SEL à la compilation en utilisant @selector(MyMethodName:) mais ce que je veux faire est de créer dynamiquement un sélecteur à partir d'un NSString . Est-ce seulement possible?

Qu'est-ce que je peux faire:

SEL selector = @selector(doWork:);
[myobj respondsToSelector:selector];

Ce que je veux faire: (pseudo code, cela ne marche évidemment pas)

SEL selector = selectorFromString(@"doWork");
[myobj respondsToSelector:selector];

J'ai recherché les documents de l'API Apple, mais je n'ai pas trouvé un moyen qui ne repose pas sur la syntaxe @selector(myTarget:) à la compilation.




Je sais que cela a été répondu il y a longtemps, mais je veux quand même partager. Cela peut être fait en utilisant sel_registerName aussi.

L'exemple de code dans la question peut être réécrit comme ceci:

SEL selector = sel_registerName("doWork:");
[myobj respondsToSelector:selector];



Links