我有一个对象,想知道MKMapView的区域何时被更改。但是,此对象不是地图视图的委托。我正在尝试以下内容,其中map
是MKMapView:
[map addObserver:self forKeyPath:@"region" options:0 context:nil];
但是,observeValueForKeyPath:ofObject:change:context:
未被回拨。
作为一个临时解决方案,我有地图的委托,让地图区域被更改后让其他对象知道,但我想将两个对象解耦,因为它们并不真正相关。
答案 0 :(得分:9)
在Cocoa(Touch)中,框架对象的属性仅保证符合KVO 如果文档说明。 -[MKMapView region]
的文档没有提出此类声明,因此您不应该尝试使用KVO。即使它碰巧工作,你也无法保证完全合规或继续成功。
相反,您必须使用委托方法并从那里发送其他对象的消息。可能您的代表可以广播NSNotification
以实现与KVO类似的效果。