Как отключить NSLog по всему приложению?

Я хочу отключить NSLog() для всех экземпляров приложения. Я нашел код, который делает это:

#ifndef DEBUG
#define NSLog //
#endif

Но добавление этого кода в каждый файл не является хорошей идеей. Как я могу сделать это проще?

Ответ 1

Xcode имеет предварительно скомпилированный файл заголовка ({project-name}-Prefix.pch в группе Поддерживающие файлы по умолчанию), это отличное место для размещения кода, который будет использоваться для каждого файла в проекте. Для дальнейшего продвижения и улучшения самого сообщения журнала см. Правда ли, что NSLog() не следует использовать для производственного кода?.

Ответ 2

Добавьте следующие строки в файл констант:

#define DEBUGGING NO    //or YES
#define NSLog if(DEBUGGING)NSLog

Два следующих предложения дают одинаковые результаты

#define NSLog

и

#define NSLog //

потому что весь текст, начинающийся с //, удаляется на фазе предварительной компиляции (включая "//" )

Ответ 3

Что я делаю, поместите это в предварительно скомпилированный заголовочный файл (YourAppName.pch):

#define MyLog if(0); else NSLog

Затем я меняю все NSLog на MyLog везде в приложении. Он работает так, как будто это NSLog. Но если вы хотите отключить NSLog, вернитесь к файлу .pch и измените 0 на 1 и presto, все остановки протоколируются.

Ответ 4

Это также позаботится о предупреждениях, возникающих при использовании

#define NSLog //

Код:

#ifndef DEBUG
  #define NSLog(...)
#endif

Ответ 5

Просто добавьте следующие строки, когда вам понадобится NSLOG для вашего файла констант

#define NSLog                       //

и прокомментировать его, когда вам это нужно.