Mój kod w UITableViewController:
delegate.myData = [myData objectAtIndex:indexPath.row];
Jak mogę zobaczyć wartości debugera delegate.myData
lub indexPath.row
w debugerze? delegate.myData
powinna być tablicą i indexPath.row
rozszerzeniem int
. Widzę tylko adresy pamięć o obiektach delegate
i indexPath
ale gdzie są myData
i row
?
po obj
w swift jestpo print(obj)
.Zgadzam się z innymi plakatami, że Xcode jako środowisko programistyczne powinno zawierać łatwy sposób debugowania zmiennych. Cóż, dobra wiadomość, JEST jedna!
Po przeszukaniu i nie znalezieniu prostej odpowiedzi / samouczka na temat debugowania zmiennych w Xcode, poszedłem zbadać sam Xcode i znalazłem to (przynajmniej dla mnie) bardzo przydatne odkrycie.
Jak łatwo debugować zmienne w Xcode 4.6.3
Na głównym ekranie Xcode upewnij się, że widzisz dolny obszar debugowania, klikając przycisk w prawym górnym rogu pokazany na zrzucie ekranu.
Teraz ustaw punkt przerwania - wiersz w kodzie, w którym chcesz zatrzymać program, klikając granicę obszaru kodu.
Teraz w obszarze debugowania poszukaj tego przycisku i kliknij środkowy. Zauważysz, że twój obszar jest teraz podzielony na dwie części.
Teraz uruchom aplikację.
Kiedy podczas wykonywania programu zostanie osiągnięty pierwszy punkt przerwania, zobaczysz po lewej stronie wszystkie zmienne dostępne w tym punkcie przerwania.
Możesz rozwinąć lewe strzałki na zmiennej, aby uzyskać więcej szczegółów. A nawet użyj pola wyszukiwania, aby wyodrębnić żądaną zmienną i zobaczyć, jak zmienia się w czasie rzeczywistym, gdy „wkraczasz” w zakres punktu przerwania.
Po prawej stronie obszaru debugowania możesz wysłać do drukowania zmienne, jak chcesz, używając prawego przycisku myszy na żądanej zmiennej.
Jak widać, to menu kontekstowe jest pełne bardzo interesujących opcji debugowania. Takich jak Watch , który został już zasugerowany za pomocą wpisanych poleceń lub nawet Edytuj wartość… która zmienia wartość czasu wykonania twojej zmiennej!
źródło
Możesz także:
IMHO trochę ukryty i uciążliwy ...
źródło
Twoje zamieszanie wynika z faktu, że zadeklarowane właściwości nie są (koniecznie nazywane tak samo jak) zmiennymi (instancji).
Wyrażenie
jest równa
i cesja
jest równa
przyjmując standardowe nazewnictwo dla zsyntetyzowanych właściwości.
Co więcej,
delegate
jest prawdopodobnie zadeklarowany jako należący do typuid<SomeProtocol>
, tj. Kompilator nie był w stanie podać rzeczywistych informacji o typiedelegate
w tym momencie, a debugger polega na informacjach dostarczonych w czasie kompilacji. Ponieważid
jest to typ ogólny, nie ma informacji w czasie kompilacji o zmiennych instancji wdelegate
.To są powody, dla których nie widzisz
myData
anirow
jako zmiennych.Jeśli chcesz sprawdzić wynik wysyłania
-row
lub-myData
, możesz użyć poleceńp
lubpo
:lub skorzystaj z okna wyrażeń (na przykład, jeśli wiesz, że Twoje
delegate
jest rzeczywistego typuMyClass *
, możesz dodać wyrażenie(MyClass *)delegate
lub kliknąć prawym przyciskiem myszydelegate
, wybraćView Value as…
i wpisać rzeczywisty typdelegate
(npMyClass *
.).Biorąc to pod uwagę, zgadzam się, że debugger może być bardziej pomocny:
Może istnieć opcja nakazująca oknu debugera użycie informacji o typie czasu wykonywania zamiast informacji o czasie kompilacji. Oczywiście spowolniłoby to debugger, ale dostarczyłoby użytecznych informacji;
Zadeklarowane właściwości mogą być wyświetlane w grupie o nazwie właściwości i pozwalać na (opcjonalną) inspekcję bezpośrednio w oknie debugera. Spowolniłoby to również debugger z powodu konieczności wysłania wiadomości / wykonania metody w celu uzyskania informacji, ale także dostarczyłoby użytecznych informacji.
źródło
Możesz wydrukować wartości w oknie konsoli w czasie wykonywania. Poniżej znajdują się kroki:
źródło
To trochę się komplikuje. Te obiekty są niestandardowymi klasami lub strukturami, a przeglądanie ich wnętrza w Xcode nie jest tak łatwe, jak w innych środowiskach programistycznych.
Na twoim miejscu NSLogowałbym wartości, które chcesz zobaczyć, z pewnym opisem.
to znaczy:
źródło
Wypróbuj Run-> Show-> Expressions
Wpisz nazwę tablicy lub cokolwiek, czego szukasz.
źródło