我有一个 appDelegate,它有一个属性 myWindow 的 MyWindowClass。我需要从 myWindow 观察 bool 属性。比我有一个 CustomViewController,需要观察布尔值的变化。如果我想添加观察者,我会在 ViewController 中执行以下操作:
LayerWindow *w = ((AppDelegate*)[UIApplication sharedApplication].delegate).window;
[w addObserver:self forKeyPath:@"touchInsideLayerWindow" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:nil];
在 ViewController 我有
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
方法定义,也在头文件中。
在 WindowClass 我有以下代码:
[self setValue:[NSNumber numberWithBool: YES]forKey:@"touchInsideLayerWindow"];
NSLog(@"isTouchInside %@", self.touchInsideLayerWindow ? @"YES" : @"NO");
ViewController 中的方法 observeValueForKeyPath 永远不会被调用。有谁知道,有什么问题吗?谢谢