我可以在 objective-c 中设置呼叫前后的路标吗?

Can I set signposts before and after a call in objective-c?

提问人:Anubis 提问时间:7/1/2020 更新时间:7/2/2020 访问量:1148

问:

我看了《工具入门》,其中显示了路标的用法。这个例子是用 Swift 编写的,但我想在我的 Objective-C 项目中使用它们。

在这些示例中,路标起点和终点设置在函数内部,这意味着它们将被相应地触发。我的项目是一个插件,它的结构不同,我只有一个“main”函数,它被调用一次,然后我使用自定义类中的一系列方法来加载和解析不同类型的数据。由于这一切都是连续的......我可以只有一个,然后用 + 一遍又一遍地重用它吗?或者这是否不安全,因为该方法可能会在触发后返回?或者,如果他们这么快就被叫来,他们会发生冲突吗?os_log_tos_signpost_id_tos_signpost_interval_beginos_signpost_interval_endend

谢谢。

// 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 日志记录 方法 路标

评论


答:

8赞 Anubis 7/2/2020 #1

好的,我发现了问题。我使用了不同的 and,因此它没有结束,只是开始了。nameos_signpost_interval_beginos_signpost_interval_end

代码应如下所示:

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