gpt4 book ai didi

ios - bool 属性上的 KVO,不调用 observeValueForKeyPath

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:22 25 4
gpt4 key购买 nike

我有一个 appDelegate,它有一个属性 myWindow of MyWindowClass。我需要从 myWindow 观察 bool 属性。比起我有一个 CustomViewController,它需要观察 bool 值的变化。如果我想添加 Observer,我会在 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。有谁知道,出了什么问题?谢谢

最佳答案

看起来有一个问题是您说该属性是 BOOL,但您正试图在 setValue 中将其设置为 NSNumber > 打电话。

第二:如果你使用 @synthesize 来创建你的 setter,那么只要你使用点语法,KVO 就会被自动支持。

   self.touchInsideLayerWindow = YES;

关于ios - bool 属性上的 KVO,不调用 observeValueForKeyPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com