Mon code dans un UITableViewController:
delegate.myData = [myData objectAtIndex:indexPath.row];
Comment puis-je voir les valeurs de delegate.myData
ou indexPath.row
dans le débogueur? delegate.myData
devrait être un tableau et indexPath.row
un int
. Je ne peux voir que les adresses mémoire des objets delegate
et indexPath
mais où sont myData
et row
?
po obj
Swift estpo print(obj)
.Je suis d'accord avec d'autres affiches que Xcode en tant qu'environnement de développement devrait inclure un moyen simple de déboguer les variables. Eh bien, bonne nouvelle, il y en a une!
Après avoir cherché et ne pas trouver de réponse / tutoriel simple sur la façon de déboguer des variables dans Xcode, je suis allé explorer avec Xcode lui-même et j'ai trouvé cette découverte (du moins pour moi) très utile.
Comment déboguer facilement vos variables dans Xcode 4.6.3
Dans l'écran principal de Xcode, assurez-vous de voir la zone de débogage inférieure en cliquant sur le bouton du coin supérieur droit montré dans la capture d'écran.
Maintenant, définissez un point d'arrêt - la ligne de votre code où vous souhaitez que votre programme se mette en pause, en cliquant sur la bordure de votre zone de code.
Maintenant, dans la zone de débogage, recherchez ces boutons et cliquez sur celui du milieu. Vous remarquerez que votre région est maintenant divisée en deux.
Maintenant, lancez votre application.
Lorsque le premier point d'arrêt est atteint lors de l'exécution de votre programme, vous verrez sur le côté gauche toutes vos variables disponibles à ce point d'arrêt.
Vous pouvez développer les flèches de gauche sur la variable pour plus de détails. Et même utilisez le champ de recherche pour isoler la variable souhaitée et la voir changer en temps réel lorsque vous «entrez» dans la portée du point d'arrêt.
Sur le côté droit de votre zone de débogage, vous pouvez envoyer pour imprimer les variables à votre guise en cliquant avec le bouton droit de la souris sur la variable souhaitée.
Comme vous pouvez le voir, ce menu contextuel regorge d'options de débogage très intéressantes. Comme Watch qui a déjà été suggéré avec des commandes tapées ou encore Edit Value… qui change la valeur d'exécution de votre variable!
la source
Vous pouvez également:
IMHO un peu caché et encombrant ...
la source
Votre confusion vient du fait que les propriétés déclarées ne sont pas (nécessairement nommées de la même manière) des variables (d'instance).
L'expression
est équivalent à
et la mission
est équivalent à
en supposant une dénomination standard pour les propriétés synthétisées.
De plus,
delegate
est probablement déclaré comme étant de typeid<SomeProtocol>
, c'est-à-dire que le compilateur n'a pas été en mesure de fournir des informations de type réelles pourdelegate
à ce moment-là, et le débogueur se fie aux informations fournies au moment de la compilation. Puisqu'ilid
s'agit d'un type générique, il n'y a aucune information à la compilation sur les variables d'instance dansdelegate
.Ce sont les raisons pour lesquelles vous ne voyez pas
myData
ourow
comme des variables.Si vous souhaitez inspecter le résultat de l'envoi
-row
ou-myData
, vous pouvez utiliser des commandesp
oupo
:ou utilisez la fenêtre des expressions (par exemple, si vous savez que votre
delegate
est de type réelMyClass *
, vous pouvez ajouter une expression(MyClass *)delegate
, ou cliquer avec le bouton droit de la sourisdelegate
, choisirView Value as…
et taper le type réel dedelegate
(par exempleMyClass *
).Cela étant dit, je conviens que le débogueur pourrait être plus utile:
Il peut y avoir une option pour indiquer à la fenêtre du débogueur d'utiliser les informations de type d'exécution au lieu des informations de compilation. Cela ralentirait le débogueur, d'accord, mais fournirait des informations utiles;
Les propriétés déclarées peuvent être affichées dans un groupe appelé propriétés et permettre une inspection (facultative) directement dans la fenêtre du débogueur. Cela ralentirait également le débogueur en raison de la nécessité d'envoyer un message / d'exécuter une méthode afin d'obtenir des informations, mais fournirait également des informations utiles.
la source
Vous pouvez imprimer les valeurs sur la fenêtre de la console au moment de l'exécution. Voici les étapes:
la source
Cela devient un peu compliqué. Ces objets sont des classes ou des structures personnalisées, et les regarder à l'intérieur n'est pas aussi facile sur Xcode que dans d'autres environnements de développement.
Si j'étais vous, je NSLoggerais les valeurs que vous voulez voir, avec une description.
c'est à dire:
la source
Essayez Exécuter-> Afficher-> Expressions
Entrez le nom du tableau ou ce que vous recherchez.
la source