Y a-t-il un moyen de casser toute la méthode du button touchUpInside?

Parfois, cela arrive quand vous avez un projet avec un code très non-géré, donc vous ne pouvez pas find comment résoudre un problème simple. Dans la plupart des cas, le débogueur nous aide à atteindre le sharepoint départ, je veux juste savoir si le débogueur xcode est puissant. Comme j'ai utilisé un débogueur asm comme OllyDbg, ceux-ci nous fournissent un non. d'option à pour le point d'arrêt le plus que j'ai utilisé est le point d'arrêt sur l'événement de clic ou l'événement de robinet. Alors, y a-t-il un moyen de mettre un point d'arrêt similaire sur le projet xcode?

On dirait que vous cherchez un moyen de piéger chaque fois qu'un UIButton est engagé. Pour ce faire, je définirais un point d'arrêt symbolique. Dans le Navigateur de point d'arrêt (⌘7), click le signe plus en bas de l'écran et choisissez Ajouter un point d'arrêt symbolique.

entrez la description de l'image ici

Dans la boîte de dialog, ajoutez ce qui suit au champ Symbole :

-[UIControl sendAction:to:forEvent:] 

entrez la description de l'image ici

C'est un peu plus que ce que vous requestz. Il va effectivement capturer tous les events à partir de beaucoup de choses à part UIButtons. Cependant, je parie que vous pouvez le faire fonctionner pour vos besoins. Maintenant, lancez l'application et appuyez sur un button. Quand il atteint le point d'arrêt, le débogueur aura l'air un peu différent de la trace de stack normale que vous pourriez avoir l'habitude de voir, puisque vous bashez un point d'arrêt à un endroit où vous n'avez pas de source pour correspondre aux symboles. Avec quelques commands, vous pouvez déchiffrer une bonne quantité. Par exemple, voir la capture d'écran ci-dessous.

entrez la description de l'image ici

Voici ce que j'ai fait, et ce que cela signifie. La première chose à faire est de passer (F6) au début de la command suivante (par exemple la ligne 12), pour vous assurer que tous les registres de vos variables entrantes sont correctement renseignés. De là, je commence juste à fouiller dans les registres pour des informations intéressantes. Dans cet exemple, le registre r15 est l'object appelant (le button!), Et r14, r12 et rbx sont les arguments (lignes 4 – 7). Lorsque la valeur dans un registre est un pointeur vers un object, vous pouvez 'imprimer l'object' comme si vous étiez dans une stackpied 'normale'. par exemple:

 (lldb) register read r15 r15 = 0x00007fc6f4a24510 (lldb) po 0x00007fc6f4a24510 <UIButton: 0x7fc6f4a24510; frame = (0 0; 414 100); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7fc6f4a247b0>> (lldb) po [[(UIButton *)0x00007fc6f4a24510 titleLabel] text] Done