Форматирование целого числа для вывода строки - PullRequest
1 голос
/ 18 апреля 2009

В действии точки останова я собираюсь это:

@(const char *)[(NSString*)[myobject retainCount]UTF8String]@

, который дает этот вывод:

<Error: Cannot access memory at address 0x2>

Если я сделаю это:

@(NSString*)[myboject retainCount]@

выводит адрес памяти. Но если я сделаю это в коде:

NSLog(@"retain count is: %d", [myobject retainCount]);

это дает такой вывод:

2009-04-18 09:58:48.085 myapp[80277:20b] retain count is: 1

Какой синтаксис необходим для правильного вывода в действии точки останова?

Кроме того, где я могу найти полный список ключей формата для действий точки останова?

Ответы [ 2 ]

5 голосов
/ 19 апреля 2009

retainCount возвращает число. Просто приведение к строке неверно, так как это число, а не строка. Чтобы напечатать число в виде строки, вы должны либо позвонить:

printf("%d",[myobject retaincount]);

или распечатайте эту строку:

[NSString stringWithFormat:@"%d",[myobject retaincount]];
5 голосов
/ 18 апреля 2009

Вы должны иметь возможность фактически использовать действие точки останова «Команда отладчика» над действием «Журнал», установив для команды текст:

p (int)[myObject retainCount]

Если вы хотите записать описание объекта Objective-C:

po myObject

Вы можете использовать действие «Журнал» перед ним, чтобы отобразить сообщение с указанием того, что печатается, если хотите.

Что касается конкретной проблемы с количеством сохраняемых данных, которую вы регистрируете в этом случае, то проверка количества сохраняемых данных напрямую и попытка устранения ошибок, связанных с памятью, таким образом, не считается хорошей практикой. См. этот пост для хорошего объяснения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...