Подтвердить что ты не робот

Lldb error: свойство не найдено на объекте типа

Я пытаюсь отладить мое приложение iOS с помощью lldb, и я получаю действительно странные ошибки при отладке.

Несколько строк перед моей точкой останова, я получил:

CGRect frame = view.frame;

Я могу получить доступ без проблем с командой print frame в lldb. Однако, когда я пытаюсь получить доступ к кадру снова в lldb, я набираю print view.frame и получаю следующую ошибку:

error: property 'frame' not found on object of type 'UIView *'

Это не имеет смысла, поскольку я могу проверить, что view является экземпляром UIView* и имеет допустимое свойство, называемое фреймом, набрав po view и получив правильные результаты:

(UIView *) $4 = 0x1e199bf0 <MyAppCustomView: 0x1e199bf0; frame = (3398 3396; 204 208); layer = <CALayer: 0x1e199ce0>>

Эта конкретная ошибка lldb случается со мной много, и я не мог найти причину этой ошибки. Кто-то предложил в "счетчик" не найден на объекте типа "NSMutableArray *" команды PO в lldb, что можно использовать gdb как (gdb) p view.frame, но я получаю error: '(gdb)' is not a valid command. и я очень подозреваю, что команда gdb "работает"? внутри другого отладчика в любом случае.

Любые предложения или обходные пути для этой ошибки, которые происходят случайным образом?

4b9b3361

Ответ 1

Точечная запись для отправки сообщений не поддерживается в lldb. Используйте условное обозначение скобки и передайте результат в CGRect:

p (CGRect)[view frame]

Ответ 2

На всякий случай вышеуказанное не работает (что не для меня, ища фрейм для переменной ячейки, класс, полученный из UITableViewCell): заставляя лишние скобки, похоже, помогать lldb мало мозгового мозга:

p ((CGRect)[cell frame])

presto magico:

(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44)