Я хочу обработать любой NSLog
в моем коде как ошибку. Строкой должна быть ошибка времени компиляции в Xcode. Точно так же, как использование release
в проекте с поддержкой ARC рассматривается как ошибка.Относитесь к использованию NSLog как ошибка построения
ответ
Попробуйте это,
#define NSLog_UNAVAILABLE __attribute__((unavailable("NSLog is treated as Error.")))
FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2) NSLog_UNAVAILABLE;
@VinothKumar Это то, что вам нужно? –
Спасибо iMartin, dreamlax, bhargavi. –
Я бы предложил сделать это только для релизов. Таким образом, вы можете использовать nslog для целей отладки (эй, это так), и это сильно не удастся для сборки релиза. – bbum
Вы можете переобъявить прототип NSLog
в коде с __deprecated
, поэтому любое использование его будет производить предупреждение:
FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2) __deprecated;
Тогда, может быть, есть какой-то способ превратить warnign в заблуждение.
Это дает предупреждение везде, где используется NSLog. Спасибо, проверит любые способы показать предупреждение как ошибку. –
Вы можете использовать это, если вы используете Clang в качестве компилятора (на самом деле просто понял, GCC поддерживает C11-х _Static_assert
тоже с версии 4.6):
#define NSLog(...) _Static_assert(0, "Not allowed to use NSLog!")
компиляция потерпит неудачу, если _Static_assert
терпит неудачу.
NSlog показан как ошибка в Xcode 4.6, однако еще две ошибки добавляются новые, а именно ошибка компоновщика Apple Mach-O и Symutil Error. –
FOUNDATION_EXPORT void NSLog (формат NSString *, ...) NS_FORMAT_FUNCTION (1,2) __unavailable; Это также работает, как предположил iMartin, однако добавляются еще 2 ошибки, а именно ошибка Apple Mach-O и ошибка DSymbutil –
@VinothKumar: я не знаю, что вы имеете в виду, я пробовал, и это работает, поэтому, возможно, ваша ошибка в другом месте? Убедитесь, что вы произносили все в правильном случае. – dreamlax
Тогда как "освобождение" отображается как ошибка в разблокированном проекте ARC? –
Вы можете просто искать все 'NSLog (command + shift + F)' и заменять его '// NSLog' перед отладкой. –
Да, «Поиск и замена» - это простое решение, но все же люди, которые присоединяются к новым в команде, могут по-прежнему использовать NSLog, забывая иногда заменять NSLog. Поэтому проверяем возможность предотвратить его в конечном счете, отметив как ошибку времени компиляции. –