Как обновить NSAttributedString из lldb - PullRequest
0 голосов
/ 14 июля 2020

Я вижу это сейчас

expr self.attributedText = [(NSAttributedString *)([NSAttributedString alloc]) initWithString:@""];
error: <user expression 24>:1:75: no known method '-initWithString:'; cast the message send to the method's return type
self.attributedText = [(NSAttributedString *)([NSAttributedString alloc]) initWithString:@""];
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~

При создании NSString работает:

(lldb) expr str = [(NSString *)([NSString alloc]) init];
(__NSCFConstantString *) $92 = 0x00007fff8098cd68 @""

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Обычно вы можете избежать необходимости использовать такие методы Foundation в анализаторе выражений, импортировав модуль Foundation в отладчик.

Если вы создаете свой код с помощью формы «импорт модулей»:

import Foundation;

и передача -fmodules при построении файла .o (для этого также есть параметр Xcode), тогда информация об отладке записывает, что ваш код импортировал модуль Foundation, и lldb автоматически импортирует это.

Если вы не используете модульную форму, вы все равно можете заставить lldb импортировать модуль, выполнив:

(lldb) expr @import Foundation

Выполнив любое из этих действий, я могу запустить ваше выражение без дополнительного приведения .

0 голосов
/ 14 июля 2020

просто говорит, что NSAttributedString не является расширением / или унаследовано от NSString, вместо этого у него есть свойство, называемое string

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

(lldp) expr str = [[NSAttributedString alloc] initWithString:@""];

должно работать

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