就像背景一样,我正在用Cocoa构建一个应用程序.此应用程序最初在C++中存在于另一个环境中.我想在Objective-C中做尽可能多的事情.
我的问题是:
1)作为一个整数,我如何计算现在和之前我记得的时间之间的毫秒数?
2)当用于Objective-C程序时,包括time.h,是什么单位
时钟()
谢谢您的帮助.
Mik*_*ler 15
您可以使用CFAbsoluteTimeGetCurrent()但请记住,时钟可以在两次通话之间切换,并且可能会让您失意.如果你想防止你应该使用CACurrentMediaTime().
返回类型,这些就是中CFAbsoluteTime和CFTimeInterval分别,这两者都是double在默认情况下.所以他们double精确地返回秒数.如果你真的想要一个整数,你可以使用mach_absolute_time()found,#include <mach/mach_time.h>其中返回64位整数.这需要一些单位转换,因此请查看此链接以获取示例代码.这是CACurrentMediaTime()内部使用的,所以最好坚持使用它.
计算两个调用之间的差异显然只是一个减法,使用变量来记住最后一个值.
有关该clock功能,请参阅此处的文档:clock().基本上你需要将返回值除以CLOCKS_PER_SEC得到实际时间.
作为一个整数,我如何计算现在和之前我记得的时间之间的毫秒数?
你有什么理由需要它作为整数毫秒?询问NSDate的时间间隔,因为另一个日期将给你一个浮点数秒.如果你确实需要毫秒,你可以简单地乘以1000来得到一个浮点数毫秒.如果确实需要整数,则可以舍入或截断浮点值.
如果您想从头到尾使用整数,请使用UpTime或mach_absolute_time以绝对单位获取当前时间,然后使用AbsoluteToNanoseconds将其转换为实际单位.显然,你必须将它除以1,000,000才能达到毫秒.
QA1398建议mach_absolute_time,但UpTime更容易,因为它返回相同的类型AbsoluteToNanoseconds使用(没有"指针乐趣",如技术说明中所示).
AbsoluteToNanoseconds返回UnsignedWide一个结构.(这些东西可追溯到Mac机器可以处理标量64位值之前.)使用该UnsignedWideToUInt64函数将其转换为标量.这只是离开减法,你将以正常的方式做.
| 归档时间: |
|
| 查看次数: |
13342 次 |
| 最近记录: |