Search code examples
iphoneobjective-cioscocoa-touchkey-value-observing

KVO: Apparently the same "effective" keyPath produce different results


I have struggled with the setup of KVO for a few hours and I managed to get it to work:

This works:

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

This doesn't:

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

Please note that self.session lazily creates an empty Session object so self.session is never nil. However, it seems that:

  1. the keypath session.loginState of self is not the same as...
  2. the keypath loginState of self.session from a KVO perspective

Why is this the case?


Solution

  • You have your observer and observee backwards. Try

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