如何解决Xcode LLDB 可以在 Swift 中观察 Object-C 变量吗?
我有一个类,它的超类是 UIScrollView,就像这样:
class MailSendContainerView: UIScrollView {
}
但是当我使用我的 Xcode LLDB 来观察它的帧变化时,我得到了这样的错误:
watch set var -w write self.scrollContainer.frame
error: "frame" is not a member of "(MailSDK.MailSendContainerView) self.some.scrollContainer"
不知是不是因为UIView的frame是一个CGRect
,是一个struct。
谁能告诉我为什么,有什么办法可以观看吗?谢谢。
Swift 5.5 Xcode 12.5
编辑
我只是尝试观看 CGRect
,这样我得到了一个错误,指出 CGRect
的大小太大而无法观看。所以我试着观察一个只有 Int
属性的 Struct,它没问题。也可以像@Caleb 说的那样观看 CGRect
的组件,例如 origin.x
。
所以我认为问题不在于它的类型。并且因为我也无法在 view
中观察变量 viewController
,这会导致 cannot find variable name 'view' in this frame
之类的错误,我认为这是关于继承还是 Object-C?但我不确定。
仍然需要答案,谢谢!
解决方法
不知是不是因为UIView的frame是CGRect,是struct。
您看到的错误是由于 UIView
没有 frame
实例变量; frame
是一个属性,即一个方法,它计算框架矩形并返回它。尝试在调试器中检查 UIView
实例并查看它的实例变量;您不会找到名为 frame
或 _frame
的。
但我认为您的推测也是正确的:如果您尝试查看结构或任何其他非本机类型,调试器会抱怨 IIRC。解决这个问题的一种方法,特别是对于像 CGRect
这样小的东西,是只观察像 origin.x
、origin.y
、width
和 height
这样的组件值相反。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。