我可以在 Objective-c 中调用之前和之后设置路标吗?

问题描述 投票:0回答:1

我观看了仪器入门,其中显示了路标的用法。该示例是用 Swift 编写的,但我想将它们与我的 Objective-C 项目一起使用。

在这些示例中,路标开始和结束是在函数内部设置的,这意味着它们将被相应地触发。我的项目是一个插件,其结构不同,我只有一个被调用一次的“主”函数,然后我使用自定义类中的一系列方法来加载和解析不同类型的数据。因为它都是连续的...我可以只有一个

os_log_t
os_signpost_id_t
并用
os_signpost_interval_begin
+
os_signpost_interval_end
一遍又一遍地重新利用它吗?或者这不安全,因为该方法可能会在触发
end
后返回?或者如果他们这么快就被叫了很多次,他们会不会发生冲突?

谢谢。

#include <os/log.h>
#include <os/signpost.h>

// Initialize
os_log_t log = os_log_create("com.example.plugin", OS_LOG_CATEGORY_POINTS_OF_INTEREST);
os_signpost_id_t spid = os_signpost_id_generate(log);

// Measurement 1 
os_signpost_interval_begin(log, spid, "testMethodA started");
[MyClass testMethodA:arg1 withOptions:arg2];
os_signpost_interval_end(log, spid, "testMethodA finished");

// Measurement 2
os_signpost_interval_begin(log, spid, "testMethodB started");
[MyClass testMethodB:arg1 withOptions:arg2];
os_signpost_interval_end(log, spid, "testMethodB finished");

[...]
objective-c xcode logging methods signpost
1个回答
9
投票

好吧,我发现了问题。我对

name
os_signpost_interval_begin
使用了不同的
os_signpost_interval_end
,因此它并没有结束而是刚刚开始。

代码应该如下所示:

// Measurement 1 
os_signpost_interval_begin(log, spid, "testMethodA");
[MyClass testMethodA:arg1 withOptions:arg2];
os_signpost_interval_end(log, spid, "testMethodA");
© www.soinside.com 2019 - 2024. All rights reserved.