In the previous four chapters, we covered the front end of Cocoa applications, windows and views, and how you can use controllers behind them. Now we turn our attention to the back end—the model—and how the data functionality of an application works.
To take full advantage of Cocoa’s data-handling mechanisms, we must first explain two concepts that we didn’t cover when we first introduced Objective-C and the Foundation Kit (see Chapter 4): protocols and key-value coding. After covering these topics, we deal with how to connect a user interface to an underlying data model and how that model can be saved and opened.
Many pieces of Cocoa functionality make use of an Objective-C language feature called a protocol. A protocol is simply a list of method declarations. A class is said to conform to a protocol when it provides implementations of the methods that a protocol defines.
To help explain the concept of a protocol, think of the similarities between a waiter at a restaurant and a vending machine. Even though the waiter and the vending machine are nowhere close to being similar objects from an inheritance standpoint, they can both implement methods related to serving food and taking money. Roughly, we could describe a protocol implemented by these two objects as the following methods:
takeOrder serveFood takeMoney returnChange complainTo
Of course, a vending machine doesn’t usually serve very tasty or nutritious food and doesn’t ...