gpt4 book ai didi

ios - 在iOS中将mach_absolute_time转换为(nano)秒(objective-C)

转载 作者:行者123 更新时间:2023-12-01 21:58:28 25 4
gpt4 key购买 nike

我正在尝试在iOS中编写一个辅助方法,以允许我将mach_absolute_time()用作秒(或纳秒),以便可以找到时间导数的传入设备传感器数据。这是我的尝试:

#include <mach/mach_time.h>

- (double) convertMachAbsoluteTimeIntoSeconds:(uint64_t) mach_time {
mach_timebase_info_data_t _clock_timebase;
double nanos = (mach_time * _clock_timebase.numer) / _clock_timebase.denom;
return nanos / 10e9;
}

上面的代码正在编译,但是我当前收到的警告是“'*'的正确操作数是垃圾值”。另外,在任何情况下都不会返回明智的结果:/

从我阅读的内容来看, mach_absolute_time()具有一些特质,因此我认为使这项工作对其他人可能有用。

一切帮助得到亲切的好评。谢谢

////编辑////

感谢Rob Napier的超快速回答,这是包含初始化的方法:
#include <mach/mach_time.h>

- (double) convertMachAbsoluteTimeIntoSeconds:(uint64_t) mach_time {
mach_timebase_info_data_t _clock_timebase;
mach_timebase_info(&_clock_timebase); // Initialize timebase_info
double nanos = (mach_time * _clock_timebase.numer) / _clock_timebase.denom;
return nanos / 10e9;
}

最佳答案

您已经声明了_clock_timebase,但是您从未对其进行初始化,因此它只是在堆栈上填充了垃圾值。您的意思是:

mach_timebase_info_data_t _clock_timebase;
mach_timebase_info(&_clock_timebase); // Initialize timebase_info
...

您可能会发现使用 AbsoluteToNanoseconds为您执行此操作更为方便。有关完整示例,请参见 QA1398: Mach Absolute Time Units

请注意 mach_timebase_info is promised to be stable,因此您可以根据需要将其初始化一次。 (如果不稳定,则无法避免使用现有API进行检查时出现竞争情况,所以那是一件好事...。)

关于ios - 在iOS中将mach_absolute_time转换为(nano)秒(objective-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60815436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com