2010-11-23 43 views
0

可能重複:
List selectors for obj-c object目標C:在運行時實例的所有選擇

有誰知道如何讓一個實例在客觀C運行時應對所有選擇?

+0

[obj-c對象的列表選擇器]的完全重複(http://stackoverflow.com/questions/330030/list-selectors-for-obj-c-object) – 2010-11-23 20:01:31

+1

您的意思是所有選擇器實際上在響應期間做出響應一個特定的運行,或所有可以響應的選擇器,在運行時確定? – 2010-11-23 21:20:47

回答

-1

dapptrace(Dtrace)是你的朋友。

手冊頁(man dapptrace)上:用戶和 庫函數

dapptrace打印細節要求

dapptrace針對的Dtrace腳本語言(D)編寫的。這意味着您可以調整dapptrace或從其腳本文件中提取想法來做很多事情。例如:

等待myFunctionWhichCreatesSpecialObject被調用。存儲它返回的對象地址(特殊對象)。打印出在該對象上調用的所有選擇器。

您還可以直接調用dtrace編寫簡單的單線法術。我會讓你去尋找那些。

-2

在運行時你可以使用

類方法 「+(BOOL)instancesRespondToSelector:(SEL)aSelector」

只要你知道你要檢查的選擇。

2

一般來說,這是不可能的。 「一個實例響應的選擇器」可能是一個無限集合。例如,可以實現將羅馬數字作爲消息發送並返回相應整數值的類。如果你想知道在一個給定時間(這是一個不同的問題)由一個類實現的實例方法的精確集合,你可以使用Objective-C runtime functions來獲得一個類的實例方法列表,並走上類樹找到它從超類繼承的那些。但是,這又是兩件完全不同的事情。一個類可能有一個它選擇不響應的消息的方法,它可能會響應那些沒有直接相應方法的消息。

相關問題