微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xcode LLDB 可以在 Swift 中观察 Object-C 变量吗?

如何解决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.xorigin.ywidthheight 这样的组件值相反。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?