This protocol defines the interface for so-called
objects. Objects that conform to the
NSObject protocol are able to provide a great deal
of information about themselves to other objects, such as their
classnames, superclass names, and the protocols that they conform to.
Additionally, this protocol declares methods that clients use to
determine whether an object can respond to an arbitrary message.
Finally, the NSObject protocol declares methods
that allow objects to participate in Cocoa's memory
management system. In the Foundation framework, the two root classes
NSObject and NSProxy conform to