Exécuter une "méthode privée"
Je suis en train de débuguer de l'affichage.
J'ai le souvenir d'avoir employé une méthode
_subtreeDescription
mais là maintenant, je n'arrive plus du tout à l'appeler (le compilateur m'en empêche).
Y a-t-il un moyen de contourner l'interdiction du compilateur ?
Je ne comprends plus rien !!! Je croyais que Objective-C permettait d'envoyer n'importe quoi à n'importe qui... mais même si je cherche à envoyer "_subtreeDescription" à un (id), ça me bloque !!!
Comment fait-on pour forcer l'envoi d'un message ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu la déclare simplement dans ton fichier .h
Donc, là , il faudrait que je crée une catégorie sur NSView ?
ou sur NSObject, ou dans un protocole
Je suppose que ton projet utilise ARC. Depuis ARC, il est impossible d'appeler une méthode inconnue du compilateur, car il n'est pas en mesure de déterminer les appels de gestion mémoire qu'il doit générer sans connaitre la signature exacte de la méthode.
Le nom de la méthode magique que tu recherches est recursiveDescription
https://developer.apple.com/library/ios/technotes/tn2239/_index.html#//apple_ref/doc/uid/DTS40010638-CH1-SUBSECTION34
Si je ne dis pas de bêtises, ce n'est pas une méthode privée à proprement parler, mais une méthode qui est ajoutée au Runtime à NSView / UIView par la lib de debug (donc elle n'est pas présente dans les .h mais elle n'est pas non dispo dans le framework / la lib UIKit finale, mais plutôt apportée par gdb/lldb et ne marche que quand tu debug l'appli, enfin je crois)
Pas besoin de faire une catégorie pour ça puisqu'en général tu l'appelles depuis le débogueur gdb / lldb.
Merci pour vos réponses !
---> à l'époque je n'utilisais pas ARC... Donc, je comprends le comment du pourquoi !!
---> Quoi !! On peut appeler des méthodes depuis le débogueur !!! Wow !! Je ne savais pas (non, mais allo quoi !).
Je m'en suis sorti de mon bug en désactivant le auto-layout de ma vue !
exemple :
Oui "po" est la commande la plus utilisée du débugueur. C'est en fait un raccourci / alias pour la commande "print-object" (d'où le nom "po").
Mais y'en a plein d'autres. Voir la doc de LLDB pour plus d'infos.
Voir aussi la doc de Xcode User Guide pour apprendre plein de trucs & astuces utiles : comment mettre un breakpoint qui fait des actions plutôt que (ou en plus de) juste s'arrêter, genre les breakpoints sonores que j'utilise pas mal pour émettre un petit bip dès que je passe dedans sans pour autant arrêter le process, ou les breakpoints qui log un message pour éviter d'avoir à arrêter l'appli, ajouter un NSLog, recompiler et relancer alors qu'un breakpoint ajouté en live peut faire la même chose, ... bref, je t'invite à lire ces User Guides & Tech Notes qui donnent toutes ces astuces.