Так есть этот класс в SpriteKit:Swift 3: Наблюдение свойство только для чтения
open class SKNode : UIResponder, NSCopying, NSCoding, UIFocusItem {
...
open var scene: SKScene? { get }
...
Я хотел бы, чтобы вызвать определенную логику, когда scene
собственность становится не равна нулю.
Это то, что я пробовал:
class MyNode : SKNode {
override var scene: SKScene? {
didSet {
if scene != nil {
// my custom logic
}
}
}
}
, но я получаю сообщение об ошибке: Cannot observe read-only property 'scene'; it can't change
, которая имеет смысл в теории.
На практике стоимость имущества делает изменения:
let node = SKNode()
print(node.scene?) // nil
scene.addChild(node)
print(node.scene?) // SKScene
есть какая-то черная магия, что я мог бы использовать вместо этого?
Нашел этот вопрос, используя KVO для вычисляемых свойств: http://stackoverflow.com/questions/36555492/kvo-on-swifts-computed-properties – scribu