Я пытаюсь отладить приложение для iPhone, я продолжаю работать, и идея добавить, что пятьдесят операторов NSLog к различным исходным файлам дают мне willies.
То, что я хотел бы сделать, записать пару операторов, сказать
NSString *methodName = [self methodName];
NSLog(@"%@", methodName);
то, что я могу просто вставить в каждый метод, я должен. Существует ли способ сделать это? Есть ли некоторая конструкция Objective C для выяснения у метода для его имени? Или я оказывающийся перед необходимостью делать это твердый путь?
Попробуйте NSLog (@ "% s", __func __)
. Это распечатает красивое описание, например - [MyView drawRect:]
.
Это также работает с функциями. Это функция компилятора.
Это то, что вам нужно:
NSLog(@"%s", __PRETTY_FUNCTION__);
Для получения дополнительной информации о связанных материалах журнала прочитайте ответы на этот вопрос: Как распечатать имя метода и номер строки и условно отключить NSLog?
Я часто использую следующие макросы:
#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
Если вам всегда нужно имя функции, вы можете легко изменить их по своему усмотрению.
Используйте: NSLog ("% @", NSStringFromSelector (_cmd));
_cmd
- это специальная переменная, передаваемая каждому методу точно так же, как self
, которая является ссылкой на селектор, вызвавший вызов метода (в основном имя и подпись метода).