我在iOS中遇到了一个关键值观察的奇怪问题。
我有一个对象,我添加观察者来监控下载进度:
[inAppProduct addObserver:self forKeyPath:@"progress" options:0 context:nil];
然后我实现了方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
此处object
参数包含已更改的inAppProduct
。一切正常,直到屏幕在下载过程中被锁定(由于不活动或通过按下电源按钮手动)。解锁屏幕后,每次inAppProduct
更新时仍会调用观察者方法,但object
不包含新值。相反,它包含屏幕锁定之前的最后一个值inAppProduct
。
如果我在添加观察者时添加选项NSKeyValueObservingOptionNew
,change
字典实际上包含新的更新值,即使object
没有。