2010-05-06 63 views
5

我編寫了一個調試宏,只要全局標記爲kDebug標誌== YES,就會向控制檯輸出傳入的字符串。每次調用任何方法時調用宏 - 目標C

無論何時調用任何方法,我都需要打印出方法的名稱及其類名。

當我苦心經歷每一種方法並在字符串中寫入類和方法的名稱時,它正常工作。

當Objective-C中的任何方法被調用時,是否有任何特殊處理程序被調用,如果有,有沒有辦法讓我可以重寫它來調用我的調試宏?

這樣做的全部目的是讓我不必通過我的代碼中的每個方法並在調試宏調用中手動編寫方法簽名。

回答

6

如果您正在尋找方法日誌記錄工具,而不是構建自己的方法,則實際上已將其構建到Objective-C運行時中。

您可能需要閱讀過蘋果的技術說明2124的Objective-C的部分: Technical Note TN2124: Mac OS X Debugging Magic

我也建議閱讀過戴夫Dribin的博客中有關使用運行時的設施爲跟蹤消息。你可以在這裏找到:Tracing Objective-C messages - Dave Dribin's Blog。戴夫注意到一個被調用的函數,你可以用它來定製你的日誌行爲。使用起來有點棘手,但Dave提供了成功使用它的必要信息。

+0

你能用簡單的代碼解釋後? – Shamsiddin 2013-05-20 19:39:35

4

看看DtraceInstruments提供了一個GUI界面。你可以說,提供一個正則表達式來匹配你想要記錄的所有方法。

0

聽起來像你在尋找__PRETTY_FUNCTION__宏...但接受的答案可能是一個更好的方式去。