我一直在努力设置KVO几个小时,我设法让它工作:
这有效:
[self addObserver:self forKeyPath:@"session.loginState" options:0 context:nil];
这不是:
[self addObserver:self.session forKeyPath:@"loginState" options:0 context:nil];
请注意,self.session
懒惰地创建一个空的Session
对象,因此self.session永远不会nil
。但是,似乎:
session.loginState
的关键路径self
与... loginState
的密钥路径self.session
为什么会这样?
答案 0 :(得分:3)
你有观察者和观察者倒退。尝试
[self.session addObserver:self forKeyPath:@"loginState" options:0 context:nil];
答案 1 :(得分:1)
使用此代码:
[self addObserver:self forKeyPath:@"session.loginState" options:0 context:nil];
您正在添加自己作为self
的关键路径session.loginState
的观察者,实际上是self.session.loginState
。
在此代码中:
[self addObserver:self.session forKeyPath:@"loginState" options:0 context:nil];
您正在添加self.session
作为self
的关键路径loginState
的观察者,实际上是self.loginState
。