os_signpost在模拟器上有效,但在设备上运行时无效

时间:2018-12-05 21:58:53

标签: ios swift xcode instruments

我要使用仪器跟踪时间的功能之一中包含以下代码行。当我使用仪器在模拟器上运行该应用程序时,使用os_signpost测得的时间就会显示出来,并且我可以准确地测量出我需要的东西。

然后我切换到设备,输入相同的代码。但是,由于它在设备上运行,因此不会显示测量的时间。它仅显示以下内容: enter image description here

os_signpost时间根本不显示。

因此,所有功能都可以在模拟器上很好地工作,但是当我切换到iPhone设备时却不能。

有什么主意吗?

let spid = OSSignpostID(log: SignpostLog.myLog, object: myObj as AnyObject)

defer { os_signpost(.end, log: SignpostLog.myLog, name: "operation1", signpostID: spid) }

os_signpost(.begin, log: SignpostLog.myLog, name: "operation1", signpostID: spid)

2 个答案:

答案 0 :(得分:1)

结果是os_signpost不会出现,因为记录设置为立即。将其设置为 Deferred 即可,这样我就可以运行该应用程序,然后停止记录,然后乐器将显示我在代码中拥有的自定义os_signpost。

enter image description here

答案 1 :(得分:0)

确保您没有通过环境变量禁用OS_ACTIVITY_MODE(请参见下面的屏幕截图)

Do not do this, or signposts will not work

我删除了它,一切正常=)