Назовите макрос каждым разом, когда любой метод называют - Objective C

Я записал макрос отладки, который печатает к консоли переданный - в строке каждый раз, когда глобальное kDebug флаг == YES.

Я должен распечатать название метода и его имени класса каждый раз, когда любой метод называют.

Это хорошо работает, когда я кропотливо прохожу каждый метод и написал имя класса и метода в строке.

Есть ли какой-либо специальный обработчик, который называют, когда какой-либо метод в Objective C называют, и если так, является там способом, которым я могу так или иначе переопределить его для вызова моего макроса отладки?

Вся цель этого состоит в том так, чтобы я не проходил каждый метод в своем коде и ручном коде сигнатура метода в вызове макроса отладки.

5
задан Jacob Relkin 20 May 2013 в 19:44
поделиться

2 ответа

Если вы ищете средство протоколирования методов, а не создаете свой собственный, то оно действительно встроено в среду выполнения Objective-C.

Возможно, вы захотите прочитать раздел Objective-C в техническом руководстве 2124 от Apple: Technical Note TN2124: Mac OS X Debugging Magic

Я бы также порекомендовал прочитать запись в блоге Дейва Дрибина об использовании средств среды выполнения для трассировки сообщений. Вы можете найти его здесь: Трассировка сообщений Objective-C - блог Дейва Дрибина. Дэйв отмечает вызываемую функцию logObjCMessageSend, которую можно использовать для настройки поведения журналирования. Она немного сложна в использовании, но Дейв дает информацию, необходимую для ее успешного применения.

6
ответ дан 13 December 2019 в 22:03
поделиться

Посмотрите на Dtrace. Instruments предоставляет интерфейс GUI. Вы можете, скажем, задать regex для сопоставления всех методов, которые вы хотите регистрировать.

4
ответ дан 13 December 2019 в 22:03
поделиться