Как отключить 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

для включения комментария