Как отключить NSLog?
Я хочу сделать следующее в Xcode:
Найти все команды NSLog без комментариев и заменить его на //NSLog...
Другими словами, я хочу прокомментировать все вызовы NSLog. Это возможно? Есть ли простой способ сделать это?
Ответы
Ответ 1
Обновление
Ответ ниже на самом деле намного лучше. См. здесь.
Начальный ответ:
Есть небольшой взлом, который вы могли бы сделать. Найдите все NSLog
и замените их на //NSLog
, а затем выполните поиск ////NSLog
и замените их на //NSLog
.
Ответ 2
Подождите, есть намного более простой метод. Просто добавьте следующие строки, когда вам не понадобится NSLOG для файла констант
#define NSLog //
и прокомментируйте это, когда вам это нужно.
EDIT: в последнем Xcode вы получите ошибку над выражением выше. Поэтому я понял, что лучший способ -
#define NSLog(...)
Ответ 3
#define NSLog if(1) NSLog
если вы не хотите, чтобы лог-набор 1 был равен 0.
Ответ 4
Мне нужно сделать отдельный ответ, потому что я пока не могу комментировать, но вам действительно нужно быть осторожным, когда вы находите и заменяете что-то вроде этого:
if(BOOL)
NSLog(@"blah blah");
[self doSomething];
Если вы закомментируете nslog, условие будет связано с методом ниже, исправьте меня, если я ошибаюсь
Ответ 5
Ответы, которые у вас есть, верны для вашего вопроса. Но. Ваш реальный вопрос - как превратить NSLogs в определенных условиях. т.е. вы хотите, чтобы они отображались для сборки Debug, а не для релизов. В этом случае попробуйте определить и использовать макрос DLog()
, как описано в Cocoa Is My Girlfriend. Если вы используете Xcode4, это еще проще, потому что сборки Debug
и Release
определяют и не определяют Debug
, поэтому вам не нужно это делать.
Это намного проще, чем комментировать и раскомментировать строки кода.
Ответ 6
#ifdef RELEASE
#define NSLog(...) do { } while (0)
#endif
- лучший способ, который я нашел до сих пор.
Ответ 7
#define NSLog (...)
добавьте эту строку в ваш .pch файл
если вы хотите использовать журнал, чем комментарий
Ответ 8
в строке меню: Правкa > Найти > Найти и заменить в рабочей области
затем отобразите параметры для использования регулярных выражений.
поиск/замена для "[^/] NSLog"
Ответ 9
Вы можете сделать это в одной операции поиска и замены. Вы можете просто заменить это обычное выражение. Это обрабатывает как прокомментированные (//), так и некомментированные строки. Это также работает, даже если предыдущие прокомментированные строки имеют более двух косых черт (например,///) вместо rwo. Вы можете ссылаться на эту ссылку. Выполните следующие действия.
- Выберите "Редактирование" > "Найти" > "Найти и заменить в рабочей области"
- Стиль = > Регулярное выражение
- Введите
(/)*(NSLog.*)
в поле "Поиск".
- Выполнение операции поиска.
- Введите
//\2
в поле "Заменить".
- Выполняйте операцию замены.
Наслаждайтесь красотой регулярных выражений; -)
Ответ 10
Я бы сделал это
#define EnableNSLog 1
#if EnableNSLog == 0
#define NSLog //
#elif EnableNSLog == 1
#warning Disable NSLog
#endif
Это должно создать предупреждающее сообщение, чтобы напомнить мне отключить NSLog
до окончательной версии.
Ответ 11
щелкните правой кнопкой мыши на инструкции NSLog в xcode и выберите " найти в проекте" в качестве текста. Вам будет предложено в новом окне, где вы можете следовать указаниям, данным Mihai Fratu.
TNQ
Ответ 12
Как отключить NSLog в Xcode для этапа производства
Добавить #define NSLog
в appName-Prefix.pch
файл в Поддерживающие файлы Папка вашего проекта
и код файла результата выглядят как...
// Prefix header for all source files of the 'NSLog' target in the 'NSLog' project
//
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
//Add this to disable NSLog
#define NSLog //
Ответ 13
Вы можете использовать следующие препроцессорные директивы, он не будет работать с режимом выпуска.
Поэтому вам не нужно комментировать NSLog().
#ifdef DEBUG
NSLog(@"YOUR MESSAGE HERE!");
#endif
Ответ 14
попробуйте также:
#define NSLog(@"YOUR MESSAGE HERE!") do { } while (0)
Ответ 15
Добавьте следующую строку в ваш .pch файл
#define NSLog
для включения комментария