首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >lldb错误:在类型为的对象上未找到属性

lldb错误:在类型为的对象上未找到属性
EN

Stack Overflow用户
提问于 2012-12-23 09:22:53
回答 3查看 12.8K关注 0票数 22

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

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

CGRect frame = view.frame;

我可以在lldb中使用print frame命令来访问它。但是,当我尝试在lldb中再次访问帧时,我键入print view.frame并得到以下错误:

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

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

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

这个特殊的lldb错误经常发生在我身上,我找不到这个错误的原因。有人在Property 'count' not found on object of type 'NSMutableArray *' PO command in lldb上建议可以使用gdb作为(gdb) p view.frame,但我得到了error: '(gdb)' is not a valid command.,我高度怀疑gdb命令可以“工作?”在另一个调试器中。

对于这个随机出现的bug,有什么建议或解决办法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-23 09:24:52

使用Objective-C时,lldb不支持用于消息发送的点符号。使用方括号表示法并将结果转换为CGRect:

代码语言:javascript
复制
p (CGRect)[view frame]
票数 57
EN

Stack Overflow用户

发布于 2013-12-02 05:36:43

以防上面的方法不起作用(我在寻找变量单元格的框架,从UITableViewCell派生的类):强制使用额外的圆括号似乎对lldb的小大脑有帮助:

代码语言:javascript
复制
p ((CGRect)[cell frame])

presto magico:

代码语言:javascript
复制
(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44)
票数 3
EN

Stack Overflow用户

发布于 2018-06-30 03:15:46

我不得不在Xcode > Product > Scheme > Edit Scheme > Run > Diagnostics中禁用(取消选中)线程消毒器。启用线程消毒器后,我无法通过LLDB访问许多NSView属性(例如边界、帧)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14007942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档