我想知道当你观察一个属性时你应该在 KVO 中设置什么上下文指针。我刚开始使用 KVO,我还没有从文档中收集到太多信息。我在这个页面上看到:http ://www.jakeri.net/2009/12/custom-callout-bubble-in-mkmapview-final-solution/作者这样做:
[annView addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
然后在回调中,这样做:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context{
NSString *action = (NSString*)context;
if([action isEqualToString:GMAP_ANNOTATION_SELECTED]){
我假设在这种情况下,作者只是创建了一个稍后在回调中标识的字符串。
然后在 iOS 5 Pushing the Limits 一书中,我看到他这样做了:
[self.target addObserf:self forKeyPath:self.property options:0 context:(__bridge void *)self];
打回来:
if ((__bridge id)context == self) {
}
else {
[super observeValueForKeyPath .......];
}
我想知道是否有标准或最佳实践可以传递给上下文指针?