2012-02-21 8 views
31

Widziałem wzmiankę o opisie i debugDescription do celów debugowania, ale nie widziałem jeszcze dokładnych wyjaśnień, kiedy i kiedy i na jakich warunkach mogą one przynosić różne wyniki.Opis i debugowanie NSObject

Dokumentacja NSObject również nie ma niczego w debugOpis. Pytanie: Kiedy używać, które i pod jakimi warunkami powinien/powinien różnić się ich wynik?

Odpowiedz

37

Technical Note TN2124

Uwaga: wydruk obiekt rzeczywiście wywołuje metodę debugDescription określonego obiektu. NSObject implementuje tę metodę, odwołując się do metody opisu. Domyślnie opis debugowania obiektu jest taki sam, jak opis. Można jednak zastąpić debugDescription, jeśli chcesz je odłączyć; wiele obiektów kakaowych robi to.

Jeśli wprowadzono debugDescription, wydruk obiektu w GDB wyświetli wynik. Wiedząc, że w interfejsie użytkownika jest używane description (wiem, że robią to powiązania), możesz użyć tego do wydrukowania dodatkowych informacji, których użytkownik nie musi widzieć.

1

Jeden dodatek do tego, co zostało już powiedziane.

Jeśli chcesz poprawić wydajność podczas pracy z po w lldb, możesz zastąpić metodę debugDescription. Pamiętaj, że samo drukowanie (sam obiekt) wywoła metodę opisu. Jeśli z jakiegoś powodu <ClassName: objectAddress> nie jest dla Ciebie dobry, zastąp go również tą metodą.

Więc moim celem było podkreślenie, że samo drukowanie wywoła metodę description, podczas gdy po dzwoni debugDescription, która domyślnie wywołuje opis. Dając to, możesz rozróżnić wyniki tych połączeń.