CADisplayLink的调用足够精确吗?

当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应该相对平稳)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值