Подтвердить что ты не робот

Любой способ задать метод для его имени?

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

Что бы я хотел сделать, это написать пару утверждений, скажем

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Использование: NSLog("%@", NSStringFromSelector(_cmd));

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

Ответ 3

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

#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

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