Во-первых, знаете ли вы, что дополнительные уведомления KVO для station.isDisplayed
являются проблемой? У вас проблемы с производительностью? Если нет, то не беспокойтесь об этом.
Если у вас возникли проблемы с производительностью, и вы установили, что они вызваны чрезмерным station.isDisplayed
уведомлениями KVO, то следующая вещь, которую нужно попробовать, - удалить ненужные уведомления KVO. Вы делаете это, переключаясь на ручные уведомления KVO.
Добавьте этот метод к определению класса station
:
@objc class var automaticallyNotifiesObserversOfIsDisplayed: Bool { return false }
И используйте наблюдатели Swift willSet
и didSet
, чтобы вручную уведомить наблюдателей KVO, но только если значение изменяется:
@objc dynamic var isDisplayed = false {
willSet {
if isDisplayed != newValue { willChangeValue(for: \.isDisplayed) }
}
didSet {
if isDisplayed != oldValue { didChangeValue(for: \.isDisplayed) }
}
}