首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法将willSet参数添加到结构的实例变量中?

有没有办法将willSet参数添加到结构的实例变量中?
EN

Stack Overflow用户
提问于 2020-08-21 06:05:43
回答 2查看 49关注 0票数 0

我正在尝试按照以下思路做一些事情:

代码语言:javascript
复制
class MyCGPoint: CGPoint {
    override public x: CGFloat {
        willSet {
            
        }
    }
}

当然,我发现类不能扩展结构,所以我不确定如何将willSet方法附加到CGPoint中已经存在的x变量上

我对这种方法的替代方案持开放态度。我尝试这样做的原因是,我可以在willSet方法中添加一个断点,并确定是什么导致SKSpriteNode的位置发生变化(即使物理速度为0)。

有关我尝试使用此技术诊断的问题,请参阅SKPhysicsBody moving even when velocity is 0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-21 07:18:02

因为你需要这个来调试,所以你可以使用use a watchpoint-[SKSpriteNode setPosition:]上的一个符号断点(我没有测试过这个),或者甚至是SKSpriteNode上的一个扩展,如下所示:

代码语言:javascript
复制
extension SKSpriteNode {
    open override var position: CGPoint {
        willSet {
            print("Position of \(self) will change to: \(newValue)")
            // Breakpoint here
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-08-21 07:00:37

你不需要子类化struct (Swift不允许你这样做)。只需创建您自己的点与相同的签名,并从您的点转换为CGPoint的方法。然后用新的Point替换实现中的CGPoint

代码语言:javascript
复制
struct MyPoint {
  var x: CGFloat {
    willSet {
    
    }
  }
  var y: CGFloat

  var cgPoint: CGPoint { CGPoint(x: x, y: y) }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63513733

复制
相关文章

相似问题

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