Как новый программист, я открыл магию NSlog
и использую все это в своем коде. Это было чрезвычайно полезно (наряду с NSZombieEnabled
) при отладке.
Я вижу определенный удар по производительности на симуляторе, поскольку он распечатывает все эти вещи. Я не думаю, что вижу такое попадание на устройствах, но я не уверен.
Так стоит ли оставлять все NSLogs
в? Это использует больше памяти на устройстве? Или компилятор просто игнорирует их, как это делает комментарии, когда я компилирую для устройства?
EDIT:
Вот что я реализовал, согласно предложению 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
всегда выводит.