KVO - позволяет объектам подписаться на изменение конкретных свойств объекта. В swift 4 это выглядит так
class MyObjectToObserve: NSObject {
@objc dynamic var myDate = NSDate()
func updateDate() {
myDate = NSDate()
}
}
class MyObserver: NSObject {
@objc var objectToObserve: MyObjectToObserve
var observation: NSKeyValueObservation?
init(object: MyObjectToObserve) {
objectToObserve = object
super.init()
observation = observe(\.objectToObserve.myDate) { object, change in
print("Observed a change to \(object.objectToObserve).myDate, updated to: \(object.objectToObserve.myDate)")
}
}
}
let observed = MyObjectToObserve()
let observer = MyObserver(object: observed)
observed.updateDate()
Notifications - Определяет зависимость типа «один ко многим» между объектами таким об разом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом. В iOS представлен в виде
NotificationCenter
.
Исходя из определений используй, то что тебе нужно.
Если например тебе нужно в разных местах обрабатывать разлогин пользователя, то используй Notifications. Если тебе нужно отслеживать изменение имени в профайле, то KVO.