Добавьте наблюдателя свойства в существующее свойство в классе библиотеки 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 (часть "Наблюдение значения ключа").

Другие вопросы по тегам