@violette_robel
KVO (Key-Value Observing) - это механизм, который позволяет наблюдать за изменениями свойств объекта в Swift. Хотя KVO более распространён в Objective-C, его также можно использовать в Swift, особенно когда вы работаете с классами, наследующимися от NSObject
. Вот пример, как можно использовать KVO в Swift:
1 2 3 4 5 6 7 8 9 |
import Foundation class Person: NSObject { @objc dynamic var name: String init(name: String) { self.name = name } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class ViewController: UIViewController { var person: Person! var observation: NSKeyValueObservation? override func viewDidLoad() { super.viewDidLoad() person = Person(name: "John") observation = person.observe(.name, options: [.new, .old]) { [weak self] (person, change) in if let newName = change.newValue { print("Name changed to (newName)") } } person.name = "Jane" // Это вызовет наблюдатель и напечатает "Name changed to Jane" } } |
Вы должны быть осторожны при использовании KVO, так как неправильное управление наблюдателями может привести к утечкам памяти или крахам. Новая система наблюдения в Swift (начиная с Swift 4) делает его использование более безопасным благодаря автоматическому управлению жизненным циклом наблюдателя.
Вот и всё! Теперь у вас есть базовое представление о том, как использовать KVO в Swift для наблюдения за изменениями свойств объектов.