Obtenez toutes les méthodes de l'Objective-C de classe ou d'instance
En Objective-C, je peux tester si une classe donnée ou d'une instance répond à certains sélecteurs. Mais comment peut-requête d'une classe ou d'instance pour l'ensemble de ses méthodes ou des propriétés d'une classe (par exemple, une liste de toutes les méthodes ou propriétés)?
Vous devez vous connecter pour publier un commentaire.
Vous aurez envie d'utiliser le runtime Objective-C méthodes, voir ici: https://developer.apple.com/reference/objectivec/objective_c_runtime
Vous pouvez le faire, et c'est extrêmement bien documenté à l' https://developer.apple.com/library/mac/documentation/cocoa/Reference/ObjCRuntimeRef/index.html
Pour récupérer toutes les instance ou de classe les méthodes d'une classe, vous pouvez utiliser
class_copyMethodList
et itérer sur les résultats. Un exemple:Vous aurez besoin de faire deux appels à cette méthode. Un pour les méthodes d'instance et un autre pour les méthodes de classe:
Appelant le même sur la métaclasse vous donnera toutes les méthodes de la classe
object_getMetaClass
. Les objets de la classe la classe est sa méta-classe.En plus de Buzzy réponse. À des fins de débogage, vous pouvez utiliser
-[NSObject _methodDescription]
méthode privée.Soit dans lldb:
ou dans le code:
Sortie regarde comme suit:
Ceci est possible via objc_method_list. Pour énumérer vos méthodes, vous devrez enregistrer toutes vos méthodes avant de la main.
Le processus est simple: une fois que vous avez déclaré votre fonction, vous pouvez créer une instance de objc_method et inscrire le nom de la fonction. Puis ajouter le objc_method à un objc_method_list et enfin passer le objc_method_list à class_addMethods..
Voici un lien pour vous aider à démarrer:
http://theocacao.com/document.page/327