iOS中的关键值。更改字典中的错误

iOS中的关键值。更改字典中的错误,ios,ios4,key-value-observing,Ios,Ios4,Key Value Observing,我订阅了另一个对象的一些更改,如下所示: [objA addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; 当进行更改时 - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object ch

我订阅了另一个对象的一些更改,如下所示:

[objA addObserver:self
       forKeyPath:keyPath
          options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
      context:nil];
当进行更改时

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
被称为


但是ChangeDictionary的“new”和“old”键的值总是相同的。此问题仅在iOS 4.x中重现。在iOS5.x中,它运行良好。有什么建议吗?

这取决于你在观察什么,以及这个物体是如何变化的。值得注意的是,如果对象指针没有变化,而是该对象的某些属性/属性发生了变化(例如,您有一个NSMutableArray,您只是向该数组添加了一个值,但NSMutableArray本身的地址没有变化),则新指针和旧指针实际上指向同一个对象,因此它看起来没有变化。通常在这些情况下,您甚至不会收到更改通知,但即使您在(例如)某些自定义设置程序中手动调用
willChangeValueForKey
didChangeValueForKey
,旧值看起来与新值相同。如果您将更改值的代码更改为实际创建对象的新副本并释放旧副本,那么您将看到新值和旧值都在更改

确保您的对象也是

如果您需要更多的帮助,您必须提供有关您正在更改的对象以及如何更改它的更多细节(尤其是源代码)