Я записал макрос отладки, который печатает к консоли переданный - в строке каждый раз, когда глобальное kDebug
флаг == YES
.
Я должен распечатать название метода и его имени класса каждый раз, когда любой метод называют.
Это хорошо работает, когда я кропотливо прохожу каждый метод и написал имя класса и метода в строке.
Есть ли какой-либо специальный обработчик, который называют, когда какой-либо метод в Objective C называют, и если так, является там способом, которым я могу так или иначе переопределить его для вызова моего макроса отладки?
Вся цель этого состоит в том так, чтобы я не проходил каждый метод в своем коде и ручном коде сигнатура метода в вызове макроса отладки.
Если вы ищете средство протоколирования методов, а не создаете свой собственный, то оно действительно встроено в среду выполнения Objective-C.
Возможно, вы захотите прочитать раздел Objective-C в техническом руководстве 2124 от Apple: Technical Note TN2124: Mac OS X Debugging Magic
Я бы также порекомендовал прочитать запись в блоге Дейва Дрибина об использовании средств среды выполнения для трассировки сообщений. Вы можете найти его здесь: Трассировка сообщений Objective-C - блог Дейва Дрибина. Дэйв отмечает вызываемую функцию logObjCMessageSend
, которую можно использовать для настройки поведения журналирования. Она немного сложна в использовании, но Дейв дает информацию, необходимую для ее успешного применения.
Посмотрите на Dtrace. Instruments предоставляет интерфейс GUI. Вы можете, скажем, задать regex для сопоставления всех методов, которые вы хотите регистрировать.