IOS開發之NSObject協議類方法說明

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
相關文章
相關標籤/搜索