有没有办法清除NSLog输出?

Kap*_*isa 11 iphone nslog

我一直在谷歌搜索过去几个小时,发现有没有办法用代码清除NSLog输出?

就像我们clrscr()在c中一样.因此,如果我们正在尝试打印我们最想要关注的内容并且有很多日志打印,那么我们可以将代码放在那里并保持我们的愿望登录以便于搜索.这可以通过在我的NSLog线上放置断点而不是点击来完成clear console.但问题是有没有办法以编程方式实现这一点?

我发现一些问题上堆栈溢出,但我din't满意答案一样是说,我可以释放模式等禁用日志

或者我可以使用DLog,ALog或ULog作为要求,但我的问题是不同的..

任何人都可以帮助我吗?

提前致谢 :)

djr*_*ero 9

您可以使用条件断点来模拟它.在代码中定义这样的函数:

int clear_console()
{
    NSLog(@"\n\n\n\n\n\n\n\n");
}
Run Code Online (Sandbox Code Playgroud)

然后,当您想要清除控制台时,只需在NSLog之前添加一个断点,并具有以下条件:

  • 条件:1> 0
  • 操作:调试器命令 expr (int) clear_console()
  • 选项:评估后自动继续选中它以跳过暂停.

在此输入图像描述

使用Xcode 4.3.2和lldb进行测试.

上一个答案:

AFAIK,不,没有.

如果您还没有这样做,您可以创建自定义宏来格式化输出以突出显示您想要的内容.

像这样定义宏:

#define CLEAR(...)          NSLog(@"\n\n\n\n\n\n") /* enough \n to "clear" the console */
#define WTF(...)            CLEAR();NSLog(@"!!!!!!!!!!!!!!");NSLog(__VA_ARGS__)
#define TRACE(__message__)  NSLog(@">>>>>>>>>>>>>>> %@ <<<<<<<<<<<<<<<<<<<", __message__)
Run Code Online (Sandbox Code Playgroud)

然后:

WTF(@"This should't be here object: %@", theObject);
...
TRACE(@"Start Encoding");
...
Run Code Online (Sandbox Code Playgroud)

这不是你想要的,但它几乎解决了这个问题.您将最终得到自己的一组宏,并在控制台输出中轻松扫描自定义前缀.