Mac OS X Developer's Guide

Sharing is used in its broadest sense in this chapter. It refers to the sharing of computer resources and of data over time and space. You may think of sharing as something that doesn t affect you or your applications you are resolutely single-user and single-machine in your design. But sharing affects almost every user and every application.
You share the processor and all of the computer resources with the operating system; when you copy data from one application to another, you are sharing it via the clipboard; and when you open a document that you created yesterday, you are sharing the data that was stored then. Beyond that, if your computer has two or more processors, they share the responsibility for running your application (and any other work that they may happen to be doing). Within your application, you may choose to use several threads that can process more or less simultaneously as the operating system optimizes the sharing of its resources; and within your application even if it is single-threaded your objects may share themselves and data elements.
Cocoa provides the tools to do all this at a very basic level so basic that you may not even be aware of what it s doing all the time. Your awareness and implementation of sharing are limited to implementing a few class-specific methods and calling some memory management methods if you need to do so.
All of the classes and methods in this chapter are widely used. Archiving and unarchiving objects are the essence...