Question: why nsobject is root class?
Answer: NSObject is the root class of most Objective-C class hierarchies. Through NSObject, objects inherit a basic interface to the runtime system and the ability to behave as Objective-C objects. A root class inherits from no other class and defines an interface and behavior common to all objects in the hierarchy below it.