Objective-c KVO: объект против changeDictionary - PullRequest
1 голос
/ 27 января 2012

Я использую KVO в приложении для iOS, чтобы уведомить viewController об изменении свойства объекта. Когда я добавляю Observer, я указываю options:NSKeyValueObservingOptionNew.

В observeValueForKeyPath Я могу получить значение свойства двумя способами: от объекта, который передан observeValueForKeyPath. Или из NSDictionary, который передается тому же методу.

Будут ли эти два подхода к получению значения обновленного свойства всегда возвращать один и тот же результат?

Напомним, я указываю NSKeyValueObservingOptionNew в качестве параметров при добавлении Observer. Из документов Apple звучит так, как будто указание NSKeyValueObservingOptionInitial может привести к разнице.

1 Ответ

1 голос
/ 17 июня 2013

В общем случае, да, эти объекты должны быть одинаковыми, хотя было бы возможно придумать сценарий, в котором их не было (т.е. пользовательский метод получения, который генерирует новое значение при каждом вызове, или что-то в этом роде). ) NSKeyValueObservingOptionInitial не будет иметь никакого отношения к содержимому этого словаря, он просто определяет, будет ли наблюдатель уведомлен немедленно или в ожидании первого изменения значения после добавления наблюдателя. Это полезно, если вам нужно, чтобы какое-то состояние наблюдателя было «заполнено».

...