如何解决有没有一种方法可以将willSet参数添加到结构的实例变量?
我正在尝试按照以下方式做些事情:
class MyCGPoint: CGPoint {
override public x: CGFloat {
willSet {
}
}
}
自然地,我发现类不能扩展Structs,所以我不确定如何将willSet方法附加到CGPoint中已经存在的x变量上
我愿意接受这种方法的替代方案。我尝试这样做的原因是,我可以在该willSet方法中添加一个断点,并确定是什么导致我的SKSpriteNode的位置发生变化(即使物理体速度为0)
请参阅SKPhysicsBody moving even when velocity is 0,以了解我正在尝试使用此技术诊断的问题。
解决方法
您不需要继承struct(Swift不允许您这样做)。只需创建具有相同签名的自己的Point,以及一种从Point转换为CGPoint
的方法。然后用新的Point替换实现中的CGPoint
struct MyPoint {
var x: CGFloat {
willSet {
}
}
var y: CGFloat
var cgPoint: CGPoint { CGPoint(x: x,y: y) }
}
,
由于您需要进行调试,因此可以use a watchpoint,-[SKSpriteNode setPosition:]
上的符号断点(尽管我没有对此进行测试),甚至可以SKSpriteNode
上的扩展名为:
extension SKSpriteNode {
open override var position: CGPoint {
willSet {
print("Position of \(self) will change to: \(newValue)")
// Breakpoint here
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。