11

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

就像我们clrscr()在c中一样。因此,如果我们尝试打印我们最想关注的内容,并且那里有很多日志打印,我们可以将代码放在那里,并将我们的愿望日志放在顶部以便于搜索。这可以通过在我的NSLog行上放置断点然后单击来完成clear console。但问题是有没有办法以编程方式实现这一目标?

我发现很少有关于堆栈溢出的问题,但我不满意这样的答案说我可以禁用发布模式的日志等。

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

任何人都可以帮助我吗?

提前致谢 :)

4

1 回答 1

9

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

int clear_console()
{
    NSLog(@"\n\n\n\n\n\n\n\n");
}

然后,当您想清除控制台时,只需在 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__)

然后:

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

这不是你想要的,但它几乎可以解决问题。您最终会得到您自己的一组带有自定义前缀的宏,这些自定义前缀可以在控制台输出中轻松扫描。

于 2012-05-22T12:31:24.563 回答