gui*_*low 5 c c++ timer objective-c callback
我确信之前已经问过这个问题所以我当然使用搜索功能检查是否有解决问题的答案.
然而,我所能找到的只是高精度测量时间的很多答案.
我需要的是一个高分辨率(至少毫秒)的计时器,它允许我在定义的时间段过去时触发回调.我想在Cocoa Mac OS X应用程序中使用它,因此可以使用C/C++或Obj-C.如果需要额外的库,那么这也很好.
我发现这个http://www.songho.ca/misc/timer/timer.html但是它使用了繁忙的等待策略,并且我认为会花费太多的性能.
非常感谢帮助!
您可以使用的一项出色技术直接来自Apple.定时器调度源:
这需要一段时间来阅读,但一旦你得到它,它很容易使用.您可以指定以纳秒为单位的时间间隔,以及应定期执行的块.
它是GCD技术的一部分,它基于C语言.由于Objective-C只是C加上一些附加内容,因此坚持使用C++似乎更自然.因此,在这种情况下,Objective-C++似乎有些过分.
小智 7
您可以直接从Apple使用GCD.在Mac OS X上,GCD从v10.7开始提供.
double delayInMilliseconds = 100.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInMilliseconds * NSEC_PER_MSEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// callback invocation
});
Run Code Online (Sandbox Code Playgroud)