Какой-либо способ попросить у метода его имени?

Я пытаюсь отладить приложение для iPhone, я продолжаю работать, и идея добавить, что пятьдесят операторов NSLog к различным исходным файлам дают мне willies.

То, что я хотел бы сделать, записать пару операторов, сказать

NSString *methodName = [self methodName];
NSLog(@"%@", methodName);

то, что я могу просто вставить в каждый метод, я должен. Существует ли способ сделать это? Есть ли некоторая конструкция Objective C для выяснения у метода для его имени? Или я оказывающийся перед необходимостью делать это твердый путь?

14
задан Andy 22 April 2010 в 02:00
поделиться

4 ответа

Попробуйте NSLog (@ "% s", __func __) . Это распечатает красивое описание, например - [MyView drawRect:] .

Это также работает с функциями. Это функция компилятора.

22
ответ дан 1 December 2019 в 07:05
поделиться

Это то, что вам нужно:

NSLog(@"%s", __PRETTY_FUNCTION__);

Для получения дополнительной информации о связанных материалах журнала прочитайте ответы на этот вопрос: Как распечатать имя метода и номер строки и условно отключить NSLog?

2
ответ дан 1 December 2019 в 07:05
поделиться

Я часто использую следующие макросы:

#if DEBUG
#  define LOG(format, args ...) fprintf(stderr, format "\n", ## args)
#  ifdef __cplusplus
#    define ERR(format, args ...) fprintf(stderr, "[%s] (%s:%i): " format "\n", __PRETTY_FUNCTION__, __FILE__, __LINE__, ## args)
#  else
#    define ERR(format, args ...) fprintf(stderr, "[%s] (%s:%i): " format "\n", __func__, __FILE__, __LINE__, ## args)
#  endif
#else
#  define LOG(format, args ...)
#  define ERR(format, args ...)
#endif

Если вам всегда нужно имя функции, вы можете легко изменить их по своему усмотрению.

4
ответ дан 1 December 2019 в 07:05
поделиться

Используйте: NSLog ("% @", NSStringFromSelector (_cmd));

_cmd - это специальная переменная, передаваемая каждому методу точно так же, как self , которая является ссылкой на селектор, вызвавший вызов метода (в основном имя и подпись метода).

11
ответ дан 1 December 2019 в 07:05
поделиться