в target-c я могу получить доступ к имени вызывающего класса / метода внутри метода? - PullRequest
0 голосов
/ 15 марта 2011

в target-c можно ли получить доступ к имени вызывающего класса / метода внутри метода?

Справочная информация:

В настоящее время я добавляю следующую строку в некоторые из моих методов ведения журнала:

NSLog(@"<%@:%@:%d>", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__);

Было бы неплохо также включить имя класса и имя метода (местоположение) кода, который вызвал метод.

Возможно ли это? Каким будет код для этого?

спасибо

Ответы [ 3 ]

3 голосов
/ 15 марта 2011

Нет практического способа сделать это (следовательно, все методы в Какао с sender аргументами).Нет даже гарантии, что есть такая вещь - она ​​может быть вызвана из простой старой, self функции, или она могла быть вызвана из метода, который был встроен ввызывающий метод, или мы могли бы добраться до этой строки с прыжка, или….

1 голос
/ 15 марта 2011

http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog

немного прибегая к помощи, может пойти долгий путь:)

Я использую PRETTY_FUNCTION и DLog.

1 голос
/ 15 марта 2011

Если вы просто делаете это в контексте отладочного исполняемого файла, попробуйте воспользоваться функцией обратного отслеживания GDB:

http://www.gnu.org/software/libc/manual/html_node/Backtraces.html

Не уверен, как это будет выглядеть в Objective-C, но если вы вернетесь назад по цепочке достаточно долго, вы должны найти что-то, вызывающее сообщение ...

Или попробуйте прочитать это и посмотреть, поможет ли это вообще:

Почему обратная трассировка не содержит символов Objective C независимо от -rdynamic?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...