В чем разница между NSKeyValueObservingOptionNew и NSKeyValueObservingOptionOld? - PullRequest
8 голосов
/ 13 августа 2011
NSKeyValueObservingOptionOld
    Indicates that the change dictionary should contain the old attribute value, if applicable.

Что означает старое значение атрибута?

Ответы [ 3 ]

12 голосов
/ 13 августа 2011

Наблюдатель получает уведомление, когда наблюдаемый ключевой путь меняет свое значение.Словарь «change» содержит информацию о том, как изменился наблюдаемый ключевой путь.Этот словарь заполняется только значениями в соответствии с параметрами, указанными при настройке

  • NSKeyValueObservingOptionNew - указывает, что вы хотите получить доступ к новому значению, в которое изменился путь ключа.
  • NSKeyValueObservingOptionOld - указывает, что вы хотите иметь доступ к старому значению, с которого изменился путь к ключу.

Если указано, что для отправки эти старые и / или новые значения являютсядоступны из словаря change с помощью следующих клавиш:

  • NSKeyValueChangeNewKey - для доступа к новому значению.
  • NSKeyValueChangeOldKey - для доступа к старому / предыдущему значению.
2 голосов
/ 18 марта 2013

Вы можете сделать что-то вроде:

[self addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

и забрать значения через:

CGSize newSize = [[change objectForKey:@"new"] CGSizeValue];
CGSize oldSize = [[change objectForKey:@"old"] CGSizeValue];
1 голос
/ 13 августа 2011

Это означает, что словарь, являющийся аргументом observeValueForKeyPath:ofObject:change:context:, содержит пару ключ-значение, которая сообщает вам старое значение наблюдаемого свойства.

...