代码(Swift 3):
os_log("State changed: from %d to %d", 1, 2)
Xcode 8 (调试区域控制台):
2016-10-01 00:38:55.903298 AUHost[82455:1512026] State changed: from 1 to 2
终端(日志流):
2016-10-01 00:38:54.880763+0200 0x17125a Default 0x8000000000022d5e 82455 AUHost: State changed: from 1 to 1718550530
Console.app :
State changed: from 1 to 1718550530
为什么 Console.app 和命令日志流显示意外值 1718550530 而不是 2 ?
谢谢!
更新:
使用偶数个参数时观察到意外行为:
os_log("View loaded: %d", 1)
os_log("View loaded: %d => %d", 1, 2)
os_log("View loaded: %d => %d => %d", 1, 2, 3)
os_log("View loaded: %d => %d => %d => %d", 1, 2, 3, 4)
os_log("View loaded: %d => %d => %d => %d => %d", 1, 2, 3, 4, 5)
输出:
View loaded: 1
View loaded: 1 => 1718550530
View loaded: 1 => 2 => 3
View loaded: 1 => 2 => 3 => 1718550532
View loaded: 1 => 2 => 3 => 4 => 5
看起来像个错误。向Apple报告:https://openradar.appspot.com/28574572
答案 0 :(得分:0)
截至今天(2020年7月21日),在Swift 5.something和Xcode 11.6中,当在iOS应用中使用os_log时,我仍然遇到此问题。
这不是一个完整的解决方案,但是对我有效的一种解决方法是在Int
调用之前将传入的String
转换为os_log()
(不要忘记更改格式令牌)到%@
):
let intA = 7
let intB = 4
os_log("State changed: from %@ to %@", String(intA), String(intB))