oc中NSObject类是所有类的基类,所有类都要继承自它,那么它的方法就显得特别重要,因为所有类都会有这些基本的方法.
看看oc的源码中NSObject是这样定义的:
@interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; }
可以看出,它实现了NSObject协议,下面我们来看看NSObject协议中定义的方法和属性。顺便将它归类为7大类
@protocol NSObject //*****1.识别类***** @property (readonly) Class superclass;//返回超类对象 - (Class)class;//返回类对象 //*******2.识别与比较对象********** - (BOOL)isEqual:(id)object;//首先判断两个对象是否类型一致,如不一致,直接返回NO,再判断具体内容是否一致 @property (readonly) NSUInteger hash;//返回一个整数,可以用来作为哈希表结构中的表地址 - (instancetype)self;//返回当前对象 //**********3.判断继承关系、是否是某类及是否有某种行为(方法)************ - (BOOL)isKindOfClass:(Class)aClass;//判断是否是这个类或者这个类的子类的实例 - (BOOL)isMemberOfClass:(Class)aClass;//判断是否是这个类的实例 与isKindOfClass的区别在于它只能判断类,不能判断子类 - (BOOL)respondsToSelector:(SEL)aSelector;//判断是否实现了某方法 - (BOOL)conformsToProtocol:(Protocol *)aProtocol;//判断是否实现了某协议 //*********4消息传递******** - (id)performSelector:(SEL)aSelector;//将指定的消息配送到接收器,应用aSelector指定的消息 - (id)performSelector:(SEL)aSelector withObject:(id)object;//同上 可以接受一参数 - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; //同上,可接受两对象参数 //*******5属性描述****** @property (readonly, copy) NSString *description;//对象返回一个字符串来描述它的内容 @property (readonly, copy) NSString *debugDescription;//返回一个字符串,描述在调试器中的接收器演示的内容 //****6确定代理*********** - (BOOL)isProxy;//判断是否接收器是否从NSObject继承 //*******7管理内存的方法******************** - (instancetype)retain OBJC_ARC_UNAVAILABLE;//增加对象的计数器 - (oneway void)release OBJC_ARC_UNAVAILABLE;//减少对象的计数器 - (instancetype)autorelease OBJC_ARC_UNAVAILABLE;//自动减少对象的计数器,但是以推迟的方式来实现 - (NSUInteger)retainCount OBJC_ARC_UNAVAILABLE;//返回一个对象当前的计数器 - (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;//垃圾自动回收 @end