如果我想要po subView的超级视图,当我使用subView.superView时,会发现没有找到投诉,但是如果我使用[subView superView],po命令会运行良好,这背后的原因是什么?
(lldb) po self.blackView.superview
error: property 'superview' not found on object of type 'UIView *'
error: 1 errors parsing expression
(lldb) po ((UIView*)self.blackView).superview
error: property 'superview' not found on object of type 'UIView *'
error: 1 errors parsing expression
(lldb) po [self.blackView superview]
<UIView: 0x15d53ce50; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x15d53cfc0>>
答案 0 :(得分:2)
它们并不是真正解决问题,它们往往是“类型信息质量”问题。在这种情况下,superview实际上是UIViewHierarchy类别的属性,clang的调试信息中存在一个错误,导致它不为类别中的属性生成调试信息。除非知道类型,否则编译器不会将属性访问转换为方法调用。
如果您正在使用Xcode7,您通常可以通过指示lldb为感兴趣的框架构建模块来修复使用clang“模块”功能(包括大多数Apple框架)的框架的此类型信息问题。更丰富的类型信息。您可以通过发出lldb命令来执行此操作:
(lldb) expr @import UIKit
在尝试使用表达式之前尝试运行它,看看是否会更好。