Just about every Cocoa class inherits fromNSObject. Even the slightly esoteric Block objects, whose class tree isn't public, have NSObject at the root.
The only other root class that is publicly known in Cocoa is NSProxy, which allows it to act in many ways like any other Cocoa object.
NSProxy
NSProxy is an abstract superclass defining an API for objects that act as stand-ins for other objects or for objects that don’t exist yet. Typically, a message to a proxy is forwarded to the real object or causes the proxy to load (or transform itself into) the real object. Subclasses of NSProxy can be used to implement transparent distributed messaging (for example, NSDistantObject or for lazy instantiation of objects that are expensive to create.
API
- (BOOL)isEqual:(id)object
- 对比对象之间是否相同,地址相同,hash值也要相同,才会返回YES
@property (readonly) NSUInteger hash / + (NSUInteger)hash
- 一般用来比较,注意:新创建的实例之间一般不同,类的静态方法返回值是一样的,比如有个类叫Man ,[Man hash]值是相同的,Man *man = [Man new]; [man hash]值不同
@property (readonly) Class superclass / + (Class)superclass
- 返回父类的类名
- (Class)class / + (Class)class
- 返回自己的类名
- (instancetype)self
- 返回自身,相当于Java 中的this
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2
- 执行aSelector方法,带参数,与[class do]这种方式比较,编译不会报错,只会警告,运行时检查是否有该方法,如没有,crash
- (BOOL)isProxy
- 检查是否不继承自NSObject(比如NSProxy),返回NO说明继承
- (BOOL)isKindOfClass:(Class)aClass
- 是否属于aClass类或者aClass子类的成员
- (BOOL)isMemberOfClass:(Class)aClass
- 是否属于aClass类的成员
- (BOOL)conformsToProtocol:(Protocol)aProtocol
+ (BOOL)conformsToProtocol:(Protocol *)protocol
- 是否遵循protocol协议
- (BOOL)respondsToSelector:(SEL)aSelector
+ (BOOL)instancesRespondToSelector:(SEL)aSelector
- 是否实现了aSelector方法
@property (readonly, copy) NSString description
+ (NSString *)description
- 返回实例类名 和 地址,可重写
@property (readonly, copy) NSString *debugDescription
+ (NSString )debugDescription
- 在调试时使用po命令使用,默认实现description方法,一般用于实现更为具体的类描述,比如内存地址等