Key-Value Observing (KVO) — это механизм, который позволяет одному объекту наблюдать и реагировать на изменения свойства другого объекта. Он встроен в runtime Objective-C и доступен любому подклассу NSObject в Swift.
Чтобы сделать свойство наблюдаемым, оно должно быть:
@objc dynamic для включения runtime-наблюденияNSObjectИспользуй блочный метод observe(_:options:changeHandler:) для регистрации наблюдателя:
class User: NSObject {
@objc dynamic var name: String = ""
}
let user = User()
let observation = user.observe(\.name, options: [.old, .new]) { object, change in
print("Name changed from \(change.oldValue!) to \(change.newValue!)")
}
\.name — это key path, указывающий на наблюдаемое свойствоoptions вроде .old и .new определяют, какая информация об изменениях передаётся в обработчикobservation должен быть сохранён для того, чтобы наблюдение оставалось активнымНаблюдения автоматически инвалидируются, когда токен удаляется из памяти. Чтобы остановить наблюдение явно, установи токену значение nil или позволь ему выйти из области видимости:
observation.invalidate()
Свойство можно наблюдать с помощью KVO в Swift без объявления @objc dynamic, если класс наследуется от NSObject.
Новый — ещё не проверен сообществом
Вы