Czy istnieje metoda, którą mogę zastąpić w moich niestandardowych klasach, aby kiedy
NSLog(@"%@", myObject)
nazywa się, wydrukuje pola (lub cokolwiek uznam za ważne) mojego obiektu? Myślę, że szukam odpowiednika języka Java w Objective-C toString()
.
objective-c
tostring
nslog
George Armhold
źródło
źródło
description
właściwość jest zarezerwowana ... i zapewni przydatne informacje dotyczące debugowania! W takim przypadku musisz wymyślić własną unikalną nazwę metody.debugDescription
też jest zarezerwowane? Chociaż myślę, żeDebugDescription
powinien być używany przez debugger, taki jak LLDB.Dodaj to do
@implementation
swojej klasy Photo:źródło
Możesz zastąpić metodę opisu NSObject:
Na temat logowania polecam ten wpis na blogu, aby lepiej logować się w Objective-C.
źródło
Możesz użyć dwóch funkcji.
Będzie to wyświetlane, gdy umieścisz swój obiekt jako, tj. Parametr dla
NSLog
. Inną funkcją opisu jest:Zostanie to wywołane, gdy zrobisz to
po anInstanceOfYourClass
w oknie poleceń debugowania. Jeśli twoja klasa nie madebugDescription
funkcji, po prostudescription
zostanie wywołana.Zauważ, że klasa bazowa
NSObject
madescription
zaimplementowaną, ale jest dość prosta: wyświetla tylko adres obiektu. Dlatego zalecam implementacjędescription
w dowolnej klasie, z której chcesz uzyskać informacje, zwłaszcza jeśli używaszdescription
metody w swoim kodzie. Jeśli używaszdescription
w swoim kodzie, proponuję również zaimplementować,debugDescription
a także uczynićdebugDescription
bardziej szczegółowym.źródło
Spowoduje to wyświetlenie dostępnych głosów:
źródło