Как вызвать методы класса в симуляторе iOS с помощью lldb?

Я пытаюсь отладить приложение iOS, и у меня возникают проблемы с lldb в симуляторе. Вызов методов класса не работает. Методы экземпляра работают нормально.

(lldb) po Category
<no result>
(lldb) po [Category class]
error: Couldn't prepare the expression for execution in the target
(lldb) po self
(TagsTableViewController *) $5 = 0x085585a0 <TagsTableViewController: 0x85585a0>

Я пробовал симуляторы 4.3 и 5.1, но оба имеют одинаковые проблемы.

При отладке на устройстве все работает нормально.


person devioustree    schedule 27.03.2012    source источник
comment
Я думаю, что это может быть ошибка в lldb, но тем временем я нашел обходной путь. Это немного неудобно, но работает: po [(Class)objc_getClass("ClassName") class]   -  person devioustree    schedule 27.03.2012


Ответы (2)


Это работает. Спасибо @devioustree, который ответил в комментарии выше.

Базовая команда устроена следующим образом:

po [(Class)objc_getClass("ClassName") class]

Чтобы вызвать someClassMethodHere:

po [[(Class)objc_getClass("ClassName") class] someClassMethodHere]
person Community    schedule 12.06.2012

Добавление этого, чтобы расширить принятый ответ...

Если вы пытаетесь присвоить новое значение переменной в lldb, как я, вместо того, чтобы просто распечатать значение, сделайте что-то вроде этого...

expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]
person digitalHound    schedule 01.12.2015