Как изменить значение NSString при отладке в Xcode? - PullRequest
44 голосов
/ 01 февраля 2011

Когда я остановился на точке останова в XCode, я могу видеть значение переменных NSString. Как я могу изменить их? Я могу изменить переменные типа int или double, но не NSString.

Ответы [ 4 ]

82 голосов
/ 15 июня 2011

Вы можете сделать это в консоли отладки.Скажем, у вас есть NSString* myVar.В консоли после (gdb) введите set myVar = @"My new string".Если вы используете (lldb), используйте вместо этого эквивалентное выражение expr myVar = @"My new string".

Это может некорректно отображаться на панели переменных, но вы можете проверить значение, введя po myVar в консоль.Ваш код должен подобрать новое значение.

Чтобы получить больше информации об использовании expr, прочитайте этот пост StackOverflow.

7 голосов
/ 11 февраля 2012

Вы можете, но вам нужно вызвать код из командной строки отладчика. Например, допустим, что после этой строки у вас отключена точка останова:

NSString *myString = @"My current string";

Затем в приглашении (gdb) введите:

call myString = @"My new string"

Вы можете po myString до изменения строки и после ее изменения проверить, изменилась ли она.

Другой пример: скажем, вы хотели изменить заголовок контроллера представления. Вы можете использовать сеттер. * Примечание: точечная запись не поддерживается в командной строке отладчика. Например, позвольте загрузке вида и затем установите точку останова где-нибудь в течение времени жизни вашего контроллера представления. Затем сделайте это:

call (id)[self setTitle:@"New Title"]

Продолжите запуск программы, и вы должны увидеть обновление заголовка вашего контроллера представления.

2 голосов
/ 20 февраля 2014

Для NSError я использую это:

(lldb) expression aTempError = (NSError*)[[NSError alloc] initWithDomain:@"MANO" code:1 userInfo:nil]
1 голос
/ 27 февраля 2015

(https://stackoverflow.com/users/1202867/n8tr) Комментарий выше n8tr показывает, как это сделать. Вы просто предшествуете своему назначению с помощью "po" следующим образом: po myString = @ "my_new_string" и po self.title = @ "New Title" .

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