我想在Xcode中执行以下操作:
查找所有没有注释的NSLog命令,并将其替换为// NSLog ...
换句话说,我想评论所有NSLog调用。这可能吗?有一个简单的方法吗?
答案 0 :(得分:78)
等待有更简单的方法。当您不需要NSLOG到常量文件时,只需添加以下行
#define NSLog //
并在需要时对其进行评论。
编辑:在最新的Xcode中,您在上述声明中收到错误。所以我想出了最好的方法是
#define NSLog(...)
答案 1 :(得分:16)
答案 2 :(得分:12)
#define NSLog if(1) NSLog
如果您不希望将日志集1设为为0.
答案 3 :(得分:10)
我必须单独回答,因为我还无法发表评论,但是当你进行查找和替换时,你真正需要注意的一件事是这样的:
if(BOOL)
NSLog(@"blah blah");
[self doSomething];
如果您注释掉nslog,条件会与下面的方法相关联,如果我错了,请更正我
答案 4 :(得分:7)
您的答案对您的问题是正确的。但。您真正的问题是如何在某些条件下转换NSLog。即你希望它们显示为Debug版本,而不是Release版本。在这种情况下,请尝试按照Cocoa Is My Girlfriend中的说明定义和使用DLog()
宏。如果你正在使用Xcode4,那就更容易了,因为Debug
和Release
版本定义并取消定义DEBUG
,所以你不必这样做。
比评论和取消注释代码行要容易得多。
答案 5 :(得分:4)
#ifdef RELEASE
#define NSLog(...) do { } while (0)
#endif
是我到目前为止找到的最佳方式。
答案 6 :(得分:3)
#define NSLog(...)
将此行添加到.pch文件
如果你想要日志而不是评论它
答案 7 :(得分:2)
您可以在单个查找和替换操作中执行此操作。您可以执行此简单的正则表达式替换。它处理注释(//)和非注释行。即使前面的注释行有两个以上的正斜杠(比如///)而不是rwo,这也可以工作。您可以参考this link。执行以下步骤。
(/)*(NSLog.*)
。//\2
。享受正则表达式的美丽; - )
答案 8 :(得分:2)
我会这样做
#define EnableNSLog 1
#if EnableNSLog == 0
#define NSLog //
#elif EnableNSLog == 1
#warning Disable NSLog
#endif
这应该会生成一条警告消息,提醒我在最终发布前禁用NSLog
。
答案 9 :(得分:1)
:编辑>查找>在工作区中查找和替换 然后,显示使用正则表达式的选项。 搜索/替换“[^ /] NSLog”
答案 10 :(得分:1)
右键单击xcode中的NSLog语句,然后选择“在项目中查找”作为文本。您将被提示进入一个新窗口,您可以按照Mihai Fratu提供的指导。
TNQ
答案 11 :(得分:1)
如何在生产阶段的Xcode中禁用NSLog
在项目的“支持文件”文件夹中的#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 //
答案 12 :(得分:0)
您可以使用以下预处理器指令,它不会使用发布模式。 所以你不必评论NSLog()。
#ifdef DEBUG
NSLog(@"YOUR MESSAGE HERE!");
#endif
答案 13 :(得分:0)
也试试这个:
#define NSLog(@"YOUR MESSAGE HERE!") do { } while (0)
答案 14 :(得分:-1)
将以下行添加到.pch文件
#define NSLog
启用评论