NSKeyValueObservingOptionNew和NSKeyValueObservingOptionOld有什么区别?

时间:2011-08-13 10:49:50

标签: iphone key-value-observing

NSKeyValueObservingOptionOld
    Indicates that the change dictionary should contain the old attribute value, if applicable.

旧属性值是什么意思?

3 个答案:

答案 0 :(得分:12)

当观察到的关键路径改变其值时,将通知观察者。 'change`字典包含与观察到的密钥路径如何变化有关的信息。此字典仅根据您在设置

时提供的选项填充值
  • NSKeyValueObservingOptionNew - 指定您希望有权访问密钥路径更改为的新值。
  • NSKeyValueObservingOptionOld - 指定您希望有权访问密钥路径更改的旧值。

如果指定要发送,可以使用以下密钥从change字典访问这些旧值和/或新值:

  • NSKeyValueChangeNewKey - 访问新值。
  • NSKeyValueChangeOldKey - 访问旧/以前的值。

答案 1 :(得分:2)

您可以执行以下操作:

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

并通过以下方式获取值:

CGSize newSize = [[change objectForKey:@"new"] CGSizeValue];
CGSize oldSize = [[change objectForKey:@"old"] CGSizeValue];

答案 2 :(得分:1)

这意味着作为observeValueForKeyPath:ofObject:change:context:参数的字典包含一个键值对,它告诉您观察到的属性的旧值。