Understanding KVO in iOS

13,431

Solution 1

Take a look at Ensuring KVO Compliance the Automatic Versus Manual Support section of the Key-Value Observing Programming Guide. Compliance is essentially achieved by following naming conventions for methods and/or ivars.

In my experience KVO tends to 'just work', which is nice.

Solution 2

When you use @property tags to create getters/ setters the magic is auto wired for To-One relationships and you only need to addObserver... and implement the observe... method to catch the updates.

The real challenge is understanding how you implement To-Many Key Value Compliance to make a mutable set or array work. The documentation here is key and the understanding that there are two sections... Indexed collections and Unordered collections. It really helped me to understand that if my @property is an NSMutableArray you need to look at the methods in the Indexed area and if your @property is a NSMutableSet you need to look at the Unordered documentation.

There are Required methods that you need to implement even if you don't plan to use them.

Share:
13,431

Related videos on Youtube

Forrest
Author by

Forrest

iOS developer with 10+ years software building experience Shanghai,China Skype: forrest.shi.ef Recent App: PushUp! https://itunes.apple.com/us/app/pushup!/id750845921?mt=8

Updated on May 17, 2022

Comments

  • Forrest
    Forrest about 2 years

    Regarding "Ensuring KVO Compliance", there are some official definition which seem like hard to understand

    In order to be considered KVO-compliant for a specific property, a class must ensure the following;

    1. The class must be key-value coding compliant for the property as specified in Ensuring KVC Compliance.

    2. The class must allow automatic observer notifications for the property, or implement manual key-value observing for the property.

    Who can give more specific examples to make this more clear ? Thanks

  • erikprice
    erikprice over 12 years
    Link rot: "Ensuring KVO Compliance" has moved to developer.apple.com/library/mac/documentation/Cocoa/Conceptu‌​al/…