gpt4 book ai didi

ios - 将 willSet block 分配给 iOS isResting 属性

转载 作者:行者123 更新时间:2023-11-30 14:12:06 24 4
gpt4 key购买 nike

我想为 isResting 属性设置一个 willSet 语句。每当 isResting 发生变化时,就会调用一些函数。这就是我的意思:

starNode.physicsBody?.isResting: Bool = false{
willSet{
if newValue == true{
print("GOOGOO")
}else{
print("STOP")
}
}
}

这不起作用。您可以将 willSet 或 didSet 分配给已定义的 iOS 属性吗?如果没有,我如何获得类似的效果?

这是文档:

https://developer.apple.com/library/mac/documentation/SceneKit/Reference/SceneKit_Framework/index.html#//apple_ref/doc/uid/TP40012283

https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNPhysicsBody_Class/index.html#//apple_ref/occ/instp/SCNPhysicsBody/isResting

最佳答案

如果不是只读:

一种选择是对库对象进行子类化并覆盖您想要设置的属性。然后,您可以在子类中实现 willSet:

class Object {
var property: Float = 0.0
}


class ChildObject: Object {
override var property: Float {
willSet {
print("Set in child class")

}
}
}

这是 Apple 在 documentation 中推荐的方式(参见“重写属性观察器”):

You can use property overriding to add property observers to an inherited property. This enables you to be notified when the value of an inherited property changes, regardless of how that property was originally implemented.

如果只读:

您也许可以使用Key-Value Observing ,如果该对象继承自 NSObject,或者它已在 Swift 中标记为 dynamic

关于ios - 将 willSet block 分配给 iOS isResting 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com