Mein Code in einem UITableViewController:
delegate.myData = [myData objectAtIndex:indexPath.row];
Wie kann ich die Werte von delegate.myData
oder indexPath.row
im Debugger sehen? delegate.myData
sollte ein Array und indexPath.row
ein sein int
. Ich kann nur Speicheradressen der Objekte sehen delegate
und indexPath
aber wo sind myData
und row
?
po obj
in Swift istpo print(obj)
.Ich stimme anderen Postern zu, dass Xcode als Entwicklungsumgebung eine einfache Möglichkeit zum Debuggen von Variablen enthalten sollte. Nun, gute Nachrichten, es gibt eine!
Nachdem ich eine einfache Antwort / ein Tutorial zum Debuggen von Variablen in Xcode gesucht und nicht gefunden hatte, ging ich zu Xcode selbst und fand diese (zumindest für mich) sehr nützliche Entdeckung.
So debuggen Sie Ihre Variablen einfach in Xcode 4.6.3
Stellen Sie im Hauptbildschirm von Xcode sicher, dass der untere Debug-Bereich angezeigt wird, indem Sie auf die im Screenshot gezeigte Schaltfläche in der oberen rechten Ecke klicken.
Legen Sie nun einen Haltepunkt fest - die Zeile in Ihrem Code, in der Ihr Programm angehalten werden soll, indem Sie auf den Rand Ihres Codebereichs klicken.
Suchen Sie nun im Debug-Bereich nach diesen Schaltflächen und klicken Sie auf die in der Mitte. Sie werden feststellen, dass Ihr Gebiet jetzt zweigeteilt ist.
Führen Sie nun Ihre Anwendung aus.
Wenn der erste Haltepunkt während der Ausführung Ihres Programms erreicht wird, sehen Sie auf der linken Seite alle an diesem Haltepunkt verfügbaren Variablen.
Sie können die linken Pfeile auf der Variablen für weitere Details erweitern. Verwenden Sie sogar das Suchfeld, um die gewünschte Variable zu isolieren und zu sehen, wie sie sich in Echtzeit ändert, wenn Sie in den Bereich des Haltepunkts "eintreten".
Auf der rechten Seite Ihres Debug-Bereichs können Sie die gewünschten Variablen senden, indem Sie mit der rechten Maustaste auf die gewünschte Variable klicken.
Wie Sie sehen können, ist dieses Kontextmenü voller sehr interessanter Debugging-Optionen. Zum Beispiel Watch , das bereits mit eingegebenen Befehlen vorgeschlagen wurde, oder sogar Edit Value… , das den Laufzeitwert Ihrer Variablen ändert!
quelle
Du kannst auch:
IMHO ein bisschen versteckt und umständlich ...
quelle
Ihre Verwirrung ergibt sich aus der Tatsache, dass deklarierte Eigenschaften keine (notwendigerweise wie) (Instanz-) Variablen sind.
Der Ausdruck
ist äquivalent zu
und die Zuordnung
ist äquivalent zu
Annahme einer Standardbenennung für synthetisierte Eigenschaften.
Darüber hinaus
delegate
wird wahrscheinlich vom Typ deklariertid<SomeProtocol>
, dh der Compiler konnte zudelegate
diesem Zeitpunkt keine tatsächlichen Typinformationen bereitstellen , und der Debugger stützt sich auf Informationen, die zur Kompilierungszeit bereitgestellt wurden. Daid
es sich um einen generischen Typ handelt, gibt es keine Informationen zur Kompilierungszeit für die Instanzvariablen indelegate
.Dies sind die Gründe, warum Sie nicht
myData
oderrow
als Variablen sehen.Wenn Sie das Ergebnis des Sendens
-row
oder überprüfen möchten-myData
, können Sie Befehle verwendenp
oderpo
:oder verwenden Sie das Ausdrucksfenster (wenn Sie beispielsweise wissen , dass es sich um einen
delegate
tatsächlichen Typ handeltMyClass *
, können Sie einen Ausdruck hinzufügen(MyClass *)delegate
oder mit der rechten Maustaste klickendelegate
,View Value as…
den tatsächlichen Typ von auswählen und eingebendelegate
(zMyClass *
. B. ).Trotzdem stimme ich zu, dass der Debugger hilfreicher sein könnte:
Es kann eine Option geben, das Debugger-Fenster anzuweisen, Laufzeitinformationen anstelle von Informationen zur Kompilierungszeit zu verwenden. Dies würde den Debugger zwar verlangsamen, aber nützliche Informationen liefern.
Deklarierte Eigenschaften können in einer Gruppe namens Eigenschaften angezeigt werden und eine (optionale) Überprüfung direkt im Debugger-Fenster ermöglichen. Dies würde auch den Debugger verlangsamen, da eine Nachricht gesendet / eine Methode ausgeführt werden muss, um Informationen abzurufen, aber auch nützliche Informationen liefern würde.
quelle
Sie können Werte zur Laufzeit auf das Konsolenfenster drucken. Unten sind Schritte:
quelle
Das wird etwas kompliziert. Diese Objekte sind benutzerdefinierte Klassen oder Strukturen, und das Betrachten in Xcode ist für Xcode nicht so einfach wie in anderen Entwicklungsumgebungen.
Wenn ich Sie wäre, würde ich die Werte, die Sie sehen möchten, mit einer Beschreibung NSLoggen.
dh:
quelle
Versuchen Sie Run-> Show-> Expressions
Geben Sie den Namen des Arrays oder was auch immer Sie suchen ein.
quelle