NSlog 不打印新行 \r\n

sna*_*ggs 2 objective-c ios

我尝试将新行添加到NSlog.

我跑:

NSLog(@"\n%@\r\n\r\n", json1);
NSLog(@"\n%@\r\n\r\n", json2);
Run Code Online (Sandbox Code Playgroud)

但是输出是:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"true"}
2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
{"attribution":"false"}
Run Code Online (Sandbox Code Playgroud)

它忽略新行作为\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 ...
Run Code Online (Sandbox Code Playgroud)

我使用 Xcode 8.3

[编辑 1]

我试着跑:

NSLog(@"%@ %@",type, @"xxxxx\n\n");
Run Code Online (Sandbox Code Playgroud)

我仍然看到:

2017-03-29 16:09:50 InAppTestAfApp2[312:33527]  
xxxxx
017-03-29 16:09:50 InAppTestAfApp2[312:33527] other logs ...
Run Code Online (Sandbox Code Playgroud)

[编辑 2]

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

NSLog(@"%@ %@\r\n\r\n%s",type, json, @"`");
Run Code Online (Sandbox Code Playgroud)

Cal*_*leb 5

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

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

如果你真的想在你的消息中包含空格,也许是为了让某些日志消息更加突出,你可以通过在空白行之后包含一个打印字符来实现。例如:

    NSLog(@"\n\nMy Really Important Message\n\n.");
Run Code Online (Sandbox Code Playgroud)

结果:

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

My Really Important Message

.
Run Code Online (Sandbox Code Playgroud)