Я хочу отключить NSLog()
для всех экземпляров приложения. Я нашел код, который делает это:
#ifndef DEBUG
#define NSLog //
#endif
Но добавление этого кода в каждый файл не является хорошей идеей. Как я могу сделать это проще?
Я хочу отключить NSLog()
для всех экземпляров приложения. Я нашел код, который делает это:
#ifndef DEBUG
#define NSLog //
#endif
Но добавление этого кода в каждый файл не является хорошей идеей. Как я могу сделать это проще?
Xcode имеет предварительно скомпилированный файл заголовка ({project-name}-Prefix.pch
в группе Поддерживающие файлы по умолчанию), это отличное место для размещения кода, который будет использоваться для каждого файла в проекте. Для дальнейшего продвижения и улучшения самого сообщения журнала см. Правда ли, что NSLog() не следует использовать для производственного кода?.
Добавьте следующие строки в файл констант:
#define DEBUGGING NO //or YES
#define NSLog if(DEBUGGING)NSLog
Два следующих предложения дают одинаковые результаты
#define NSLog
и
#define NSLog //
потому что весь текст, начинающийся с //, удаляется на фазе предварительной компиляции (включая "//" )
Что я делаю, поместите это в предварительно скомпилированный заголовочный файл (YourAppName.pch):
#define MyLog if(0); else NSLog
Затем я меняю все NSLog на MyLog везде в приложении. Он работает так, как будто это NSLog. Но если вы хотите отключить NSLog, вернитесь к файлу .pch и измените 0
на 1
и presto, все остановки протоколируются.
Это также позаботится о предупреждениях, возникающих при использовании
#define NSLog //
Код:
#ifndef DEBUG
#define NSLog(...)
#endif
Просто добавьте следующие строки, когда вам понадобится NSLOG для вашего файла констант
#define NSLog //
и прокомментировать его, когда вам это нужно.