I am trying to implement a safe key value observing on keypaths. Let's suppose that I have a data model object named
person.workplace = newWorkplace;
You can observe the keyPath "workplace" on the person object. When this keyPath is invoked, you simply removeObserver for "workplace.address".
[person addObserver:theObserver forKeyPath:@"workplace" options:[NSKeyValueObservingOptionNew] context:NULL];
The accepted answer in this thread best described your situation. You should not have observe the property "address" in the first place, since you have no control over the life-cycle of "workplace". You have a design issue.