lldb错误:在类型的对象上找不到属性

Can*_*ğlu 21 objective-c lldb ios6 xcode4.5

我正在尝试使用lldb调试我的iOS应用程序,我在调试时遇到了非常奇怪的错误.

在断点前几行,我得到了:

CGRect frame = view.frame;

我可以访问print framelldb中的命令没有问题.但是,当我尝试在lldb中再次访问该帧时,我键入print view.frame并获得以下错误:

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

这没有意义,因为我可以通过键入并获得正确的结果来验证view是一个UIView*实例并且具有一个名为frame的有效属性po view:

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

这个特殊的lldb错误发生在我身上很多,我找不到这个错误的原因.有人建议在'count'中找不到lldb类型'NSMutableArray*'PO命令的对象,可以使用gdb,(gdb) p view.frame但是我得到了error: '(gdb)' is not a valid command.,我非常怀疑gdb命令会"起作用吗?" 反正在另一个调试器里面.

有关此bug的任何建议或解决方法是随机发生的吗?

Nat*_*ler 55

lldb不支持消息发送的点表示法.使用括号表示法并将结果转换为CGRect:

p (CGRect)[view frame]
Run Code Online (Sandbox Code Playgroud)

  • @canpoyrazoğlu因为当LLDB查询运行时,它不知道您要打印的非对象的类型,所以转换为它提供了承诺类型. (3认同)