Exemple: J’ai une méthode -myFooBarMethod:withFoo:bar:moreFoo:
et à l’intérieur de l’implémentation de cette méthode, je veux dynamicment en obtenir le nom, comme @"-myFooBarMethod:withFoo:bar:moreFoo:
dans un NSSsortingng. -typage de la signature de la méthode.
Je pense que cela doit faire quelque chose avec les sélecteurs. Comment puis-je obtenir le nom de la méthode actuelle (celle qui exécute le code) en tant que NSSsortingng?
Chaque appel de méthode passe également deux arguments cachés: un id
nommé self
et un SEL
nommé _cmd
. Vous pouvez utiliser NSSsortingngFromSelector
pour convertir le sélecteur de méthode en un NSSsortingng:
NSSsortingngFromSelector(_cmd);
Utilisez __func__
. Ceci est une chaîne C, donc pour un NSSsortingng, utilisez [NSSsortingng ssortingngWithUTF8Ssortingng:__func__]
.
Cela a deux avantages par rapport à _cmd
:
__func__
doit exister par C99.) "-[MyView drawRect:]"
. Comme exemple de ce genre de chose est utile: Ceci est un modèle pour les messages NSLog que j’utilise:
NSLog(@"%@ %@: %@", NSSsortingngFromClass([self class]), NSSsortingngFromSelector(_cmd), @"A Message");
Cela vide la classe et la méthode sur la console lors de la connexion.
Selon la réponse de Martin, vous pouvez également lire les informations sur Objective C 2.0 Runtime .
Jouer dans les sortingpes comme cela a tendance à conduire à un code difficile à gérer, cependant.