KVO is a feature that Swift inherits from Objective-C. It requires that your objects are properly exposed to Objective-C, as it leverages its dynamism.
Not all properties in Objective-C objects support KVO—for example, it's not possible to observe the count in NSArray objects in order to be notified when new elements are added.