0

我正在使用 opengl 处理图形,我想为每秒 512 个值设置计时器,我这样做了:

self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/512.0 
                               target:self
                               selector:@selector(drawView) 
                               userInfo:nil 
                               repeats:YES];

在绘图方法中,我绘制了图形,但它不是每秒打印 512 个值。

任何人都可以帮助我,无论是对还是错?

4

4 回答 4

4

一个 NSTimer 可能无法快速触发。

定时器不是实时机制;它仅在已添加计时器的运行循环模式之一正在运行并且能够检查计时器的触发时间是否已过时触发。由于典型的运行循环管理的各种输入源,计时器的时间间隔的有效分辨率被限制在 50-100 毫秒的数量级。

http://developer.apple.com/library/ios/#documentation/cocoa/reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html

除非您正在做一些非常特别的事情,否则每秒可以给您 10-20 个滴答声。

于 2012-12-10T13:27:46.797 回答
1

那是行不通的。

有(至少)两个原因。

  1. "由于典型的运行循环管理的各种输入源,计时器的时间间隔的有效分辨率被限制在 50-100 毫秒的数量级。” 所以你不能期望每秒触发超过十个定时器。
  2. 不确定 iOS 上的最大帧速率是多少,但超过 60 可能没有多大意义。
于 2012-12-10T13:25:45.633 回答
0
[NSTimer scheduledTimerWithTimeInterval:1.0f/512.0f target:self selector:@selector(drawView) userInfo:nil repeats:YES];

try to use this one

let me know whether it is working or not!!!

Happy Coding!!!!

于 2012-12-10T13:00:06.923 回答
0

我能够每秒绘制 512 个值。我使用的时间间隔相同,但我参考加速度计图:http: //developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Listings/MainViewController_m.html#//apple_ref/ doc/uid/DTS40007410-MainViewController_m-DontLinkElementID_10 我根据我的要求定制了它,它工作得很好。谢谢!!!

于 2012-12-11T12:45:58.980 回答