Как новый программист, я открыл для себя волшебство NSlog
и использую его во всем своем коде.Это было чрезвычайно полезно (вместе с NSZombieEnabled
) при отладке.
Я вижу явное снижение производительности симулятора, когда он распечатывает все это. Я не думаю, что вижу подобное на устройствах, но я не уверен.
Так стоит ли оставить все NSLogs
в? Он использует больше памяти на устройстве? Или компилятор просто игнорирует их, как комментарии, когда я компилирую для устройства?
РЕДАКТИРОВАТЬ:
Вот что я реализовал согласно предложению rano.
В моем файле App_Prefix.pch
я добавил:
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
А затем в моем инспекторе Project Info
для конфигурации Debug
под заголовком GCC 4.2 - Предварительная обработка,
Я добавил значение DEBUG
в верхнюю запись под названием Макросы препроцессора.
Работает как чудо - DLog
выводит, когда я создаю Debug
версию, а ALog
выводит всегда.