Регулярное выражение для включения и выключения NSLogs? - PullRequest
3 голосов
/ 07 февраля 2012

У меня есть большой проект Xcode, в котором есть несколько десятков NSLogs, некоторые закомментированы.

Функция поиска / замены в Xcode имеет опцию регулярного выражения, так как я могу сделать так, чтобы она закомментировала все активныеNSLogs, таким образом, что другой найти / заменить может снова включить их.Итак, исходный код:

//NSLog(@"one");
NSLog(@"two");

становится, после регулярного выражения найти / заменить:

//NSLog(@"one");
//**NSLog(@"two");

, который снова включается, становится:

//NSLog(@"one");
NSLog(@"two");

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Есть гораздо лучшее решение.Просто поместите это в файл prefix.pch:

//disable logging when not in debug
#ifndef DEBUG
#undef NSLog
#define NSLog(args, ...)
#endif

Это отключит NSLogs, когда ваше приложение не находится в режиме отладки.Таким образом, вам не нужно фактически удалять их из кода, но они не будут влиять на производительность.

Если вам интересно, как это работает, функция NSLog () переопределяется как пустая, когдамакрос DEBUG не определен.По умолчанию DEBUG определяется только для отладочных проектов.Вы можете изменить его так, чтобы он включался и выключался по-другому, если предпочитаете, просто заменив первую строку на #if SOME_OTHER_CONDITION.

1 голос
/ 07 февраля 2012

Лучшим решением для этого будет использование макроса, такого как DLog, которым вы можете управлять с помощью отладки (или вашего собственного флага компилятора).Проверьте эту ссылку или эту

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