Как новый программист, я открыл для себя волшебство 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 - Preprocessing,
я добавил значение DEBUG
в верхнюю запись под названием Preprocessor Macros.
Работает как шарм - DLog
выводит, когда я создаю Debug
версию, а ALog
всегда выводит.