NSObject的內省方法

2021-07-10 20:22:34 字數 845 閱讀 3002

明智地使用內省可以使物件導向的程式更加高效和強壯。它有助於避免錯誤地進行訊息派發、錯誤地假設物件相等、以及類似的問題。

下面的部分將介紹如何在**中有效地使用nsobject的內省方法。

1、iskindofclass:class

檢查物件是否是那個類或者其繼承類例項化的物件

2、ismemberofclass:class

檢查物件是否是那個類但不包括繼承類而例項化的物件

示例:

if ([item iskindofclass:[nsdata class]])

如果item是nsmutabledata類例項化的物件,而該類是nsdata類的子類,那麼[item iskindofclass:[nsdata class]]的值也是true,而[item ismemberofclass:[nsdata class]]的值則為false。

如果item是nsdata類例項化的物件,那麼[item ismemberofclass:[nsdata class]]的值則為true。

3、respondtoselector:selector

檢查物件是否包含這個方法

- (void)docommandbyselector:(sel)aselector  else   

}

4、conformstoprotocol:protocol

檢查物件是否符合協議,是否實現了協議中所有的必選方法。

if (!([((id)testobject) conformstoprotocol:@protocol(nsmenuitem)]))

NSObject 內省方法

內省 introspection 是物件導向語言和環境的乙個強大特性,objective c和cocoa在這個方面尤其的豐富。內省是物件揭示自己作為乙個執行時物件的詳細資訊的一種能力。這些詳細資訊包括物件在繼承樹上的位置,物件是否遵循特定的協議,以及是否可以響應特定的訊息。nsobject協議和類定...

NSObject 類的反射,方法反射(十五)

nsobject 類的反射,方法反射用法如下 import ms nsreflect.h import ms person.h import ms student.h implementation ms nsreflect void shownsreflect else 基類 iskindofcla...

NSObject的那點事

nsobject的那點事 社群會員jameshudw對nsobject類做的總結,希望對各位有所幫助。文 cocoachina社群會員jameshudw 首先我們來看一下c語言中的struct的記憶體表示 typedef struct intstruct intstruct 結構體在記憶體中的表示為...