0

我已经为 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。但是,似乎:

  1. 的密钥路径session.loginStateself...不一样
  2. 从 KVO 的角度来看loginState的关键路径self.session

为什么会这样?

4

2 回答 2

3

你有你的观察者和向后观察者。尝试

[self.session addObserver:self forKeyPath:@"loginState" options:0 context:nil];
于 2012-08-10T20:43:50.413 回答
1

使用此代码:

 [self addObserver:self forKeyPath:@"session.loginState" options:0 context:nil];

您将 self 添加为selfkeypath的观察者session.loginState,这是有效的self.session.loginState

在这段代码中:

 [self addObserver:self.session forKeyPath:@"loginState" options:0 context:nil];

您正在添加self.session作为self's keypath的观察者loginState,这是有效的self.loginState

于 2012-08-10T21:07:32.520 回答