В Какао нет никакого "дампа" как print_r или Python PHP 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]
.
можно также использовать объектную команду печати gdb для быстрого просмотра объекта в отладчике:
po dictionary
Это будет в основном тем же как называющий NSLog (...) из Вашего кода.
Также полезный при распечатывании NSData, который содержит данные ASCII:
p (char *) [data bytes]
Используйте NSLog () для дампа содержания объектов. Например:
NSData* myData = //... assume this exists
NSLog(@"Contents of myData: %@", myData);
NSLog имеет строку формата printf-стиля (ожидает объект NSString), сопровождаемый списком переменных параметров, точно так же, как printf. % символа замены представляет объект метод описания на объекте. Это полезно для дампа большинства объектов Objective C в Какао.
, Если Вы хотите вывести содержание объекта с помощью gdb (я вижу, Вы отметили это с gdb), используйте специальную "почтовую" директиву вместо печати. Например:
gdb) po myData
заставит gdb выводить объект myData. почтовый ярлык для объекта печати.
Будьте осторожны с NSLog, регистрирующимся-> Вы, скорее всего, не хотите его в производственном коде.
можно хотеть использовать альтернативную функцию входа, которая называет NSLog, когда продукт работает в режиме отладки.