Добавьте наблюдателя свойства в существующее свойство в классе библиотеки iOS
В моей игре SpriteKit я хочу добавить наблюдателя свойства на fieldBitMask
собственность для SKPhysicsBody
из моих спрайтов. Я хочу быть в курсе, когда fieldBitMask
свойство меняется, так что я могу предпринять некоторые действия.
Я переиграл SKPhysicsBody
но когда я попытался назначить переопределенный класс узлу спрайта, как обычный SKPhysicsBody
объект я получил кучу ошибок. Я также думал о создании расширения для SKPhysicsBody, но в документации Apple говорится: "Расширения могут добавлять новые функциональные возможности к типу, но они не могут переопределять существующие функциональные возможности". Поэтому может показаться, что я не могу переопределить fieldBitMask
свойство таким образом, чтобы сделать его наблюдателем.
Я знаю, как создать наблюдатель свойства в новом пользовательском классе, который я создаю. Но как лучше всего добавить наблюдателя свойства в существующее свойство в классе, который является частью библиотеки Apple?
2 ответа
Вы можете подкласс SKPhysicsBody
как это:
class Subclass: SKPhysicsBody {
override var fieldBitMask: UInt32 {
didSet {
print(fieldBitMask)
}
}
}
Я думаю, что вы можете использовать Наблюдение значения ключа. Вы можете добавить наблюдателя к изменению свойства.
Вы должны реализовать observeValue(forKeyPath:of:change:context:)
метод в вашем классе наблюдателя.
Здесь вы можете найти пример Swift (часть "Наблюдение значения ключа").