In addition to overloading existing terms, key-value coding defines some unique terminology of its own.
Key-value coding can be used to access three different types of object values: attributes, to-one relationships, and to-many relationships. The term property refers to any of these types of values.
An attribute is a property that is a simple value, such as a scalar, string, or Boolean value. Value objects such as
NSNumber and other immutable types such as as
NSColor are also considered attributes.
A property that specifies a to-one relationship is an object that has properties of its own. These underlying properties can change without the object itself changing. For example, an
NSView instance’s superview is a to-one relationship.
Finally, a property that specifies a to-many relationship consists of a collection of related objects. An instance of
NSSet is commonly used to hold such a collection. However, key-value coding allows you to use custom classes for collections and still access them as if they were an
NSSet by implementing the key-value coding accessors discussed in “Collection Accessor Patterns for To-Many Properties.”