В Какао нет «дампа», как в PHP print_r или в Python repr , поскольку нет текстового формата, который «представляет» объект, как в этих языках. Если вы используете
NSLog(@"%@", myObj);
или
NSString *stringRep = [NSString stringWithFormat:@"%@",myObj];
или
NSString *stringRep = [myObj description];
вы получите (вошел в консоль в первом случае) результат [myObj description]
, метод, определенный в NSObject
с целью печати описания ( не свалка) объекта.
Если вы вызываете po myObj
в GDB, вы получаете [myObj debugDescription]
(часто то же самое, что description
, но не всегда).
Классы типа NSArray
и NSDictionary
и NSData
переопределяют description
, чтобы напечатать довольно полезное рекурсивное описание их содержимого, но по умолчанию [NSObject description]
печатает только значение указателя, соответствующее экземпляру.
Если вы управляете кодом для рассматриваемых типов, вы можете переопределить их description
или debugDescription
методы для возврата всего, что вы хотите. Если нет, вы можете переопределить метод description
или debugDescription
, используя категорию, или использовать категорию для определения myDebugDescription
или чего-то такого, что вы могли бы затем вызывать из gdb, используя po [myObj myDebugDescription]
.