Search code examples
objective-c

What is Key-Value-Coding and Key-Value-Observing in Objective C?


Can someone explain in simple terms what is Key-Value-Coding and Key-Value-Observing? Please don't provide links to Apple Developer's reference Document. I have gone through them. I expect an explanation in very simple terms.


Solution

  • Key-Value-Coding (KVC) means accessing a property or value using a string.

    id someValue = [myObject valueForKeyPath:@"foo.bar.baz"];
    

    Which could be the same as:

    id someValue = [[[myObject foo] bar] baz];
    

    Key-Value-Observing (KVO) allows you to observe changes to a property or value.

    To observe a property using KVO you would identify to property with a string; i.e., using KVC. Therefore, the observable object must be KVC compliant.

    [myObject addObserver:self forKeyPath:@"foo.bar.baz" options:0 context:NULL];