NSlog不会打印新行\ r \ n

时间:2017-03-29 13:15:17

标签: ios objective-c

我尝试向NSlog添加新行。

我跑:

NSLog(@"\n%@\r\n\r\n", json1);
NSLog(@"\n%@\r\n\r\n", json2);

然而输出是:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"true"}
2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"false"}

它将新行忽略为\r\n(仅尝试\n),但在字符串工作之前的第一个\n

我期待:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"true"}


2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"false"}


017-03-29 16:09:50 InAppTestAfApp2[312:33527] other logs ...

我使用Xcode 8.3

[编辑1]

我试图跑:

NSLog(@"%@ %@",type, @"xxxxx\n\n");

我仍然看到:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
xxxxx
017-03-29 16:09:50 InAppTestAfApp2[312:33527] other logs ...

[编辑2]

作为解决方法,我最后添加垃圾,但看起来很乱:

NSLog(@"%@ %@\r\n\r\n%s",type, json, @"`");

1 个答案:

答案 0 :(得分:4)

Mac上从未需要回车/换行线对(CR + LF)。经典MacOS使用CR,而MacOS X使用LF(由于其Unix传统)。因此NSLog()从您正在记录的文本中删除CR字符并不奇怪。

NSLog()从日志语句末尾修剪空格也就不足为奇了。 NSLog()用于记录消息 - 它不是通用print语句。保持日志紧凑是有用的,并且从消息末尾修剪空白行就是为了这个目的。

如果您真的想在邮件中包含空格,或许可以使某些日志消息更加突出,您可以通过在空行后面加一个打印字符来实现。例如:

    NSLog(@"\n\nMy Really Important Message\n\n.");

结果:

2017-03-29 09:28:12.898 MessageTest[13407:2524935] 

My Really Important Message

.