oc中NSObject類是全部類的基類,全部類都要繼承自它,那麼它的方法就顯得特別重要,由於全部類都會有這些基本的方法.spa
看看oc的源碼中NSObject是這樣定義的:debug
@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