您的位置:首页 > 移动开发 > IOS开发

CADisplayLink的调用足够精确吗?

2016-07-22 09:59 344 查看
当CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的target上的selector。

对于iOS设备来说刷新频率就是60HZ,也就是说selector的调用是每秒60次。

但是CADisplayLink的调用真的足够精确吗?因为我们知道,fps这个东西可不是一成不变的!

我在selector中写了下面一些代码:

some++;
if (some==60) {
some=0;
NSLog(@"一秒!!");
}


也就意味着,如果每秒调用60次的话,那么输出应该是每秒1次。



可以看到输出中的时间。一开始是很平稳的45:01,45:02,45:03,然后一下子跳到了45:09,然后又是45:12,45:15,可以看到,并不是确定的每秒输出一次,也就是并不是每秒调用60次selector!

那么为什么一开始那么平稳,突然就变了呢。我在一个tableView中,每个cell加了很多复杂的UI,所以GPU去渲染时很耗费性能,导致fps并不能以60的平稳状态保持,selector的调用也就相应的变化了。

结论

CADisplayLink的调用足够精确吗?

答:CADisplayLink每当屏幕刷新一次就会调用一次selector,非常精确。但是,应为屏幕刷新并不是一成不变的每秒60次,所以每秒调用固定次数的说法并不正确!

(虽然一个好的应用,fps应该相对平稳)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息