#define NSLog (...) все еще печатает вывод на консоль - PullRequest
2 голосов
/ 31 марта 2011

Я попытался отключить NSLog в сборке выпуска.

Я поместил следующий код в файл .pch

# ifndef __OPTIMIZE __
# define NSLog (...)NSLog (__ VA_ARGS __)
# else
# define NSLog (...) {}
#endif

Не работает, поэтому я попытался

# define NSLog (...) {}

Он все еще печатает вывод на консоль.

Любая помощь будет хорошей, спасибо!

Ответы [ 5 ]

1 голос
/ 01 апреля 2011

вы бы объявили свою собственную функцию журнала и использовали бы ее вместо этого. его реализация может пройти через NSLogv, если вы хотите список va. его реализация также не будет пересылать сообщения в NSLogv при отключении, поэтому вам, вероятно, потребуется более одного варианта средства ведения журнала.

1 голос
/ 01 апреля 2011

Похоже, то, что вы хотите, похоже на это определение для DLog из этого предыдущего ответа SO на советы и рекомендации NSLog .

#ifdef DEBUG 
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
#else 
#   define DLog(...)
#endif
0 голосов
/ 02 сентября 2015

В вашем приложении .pch файл поставьте следующую строку. определить NSLog (dese, ...)

Прекратит печать.

0 голосов
/ 01 февраля 2013

Макрос препроцессора установлен в настройке сборки проекта, имеющего: DEBUG = 1 $ (наследуется)

Так что теперь просто используйте: if (DEBUG) NSLog (@ "Your log");

0 голосов
/ 31 марта 2011

Убедитесь, что __OPTIMIZE__ определено в настройках сборки или выше в самом файле .pch и что файл pch задан в Заголовок префикса (GCC_PREFIX_HEADER). Также вы можете определить NSLog (...) как ничего

#define NSLog(...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...