CADisplayLink的调用足够精确吗?
2016-07-22 09:59
344 查看
当CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的target上的selector。
对于iOS设备来说刷新频率就是60HZ,也就是说selector的调用是每秒60次。
但是CADisplayLink的调用真的足够精确吗?因为我们知道,fps这个东西可不是一成不变的!
我在selector中写了下面一些代码:
也就意味着,如果每秒调用60次的话,那么输出应该是每秒1次。
可以看到输出中的时间。一开始是很平稳的45:01,45:02,45:03,然后一下子跳到了45:09,然后又是45:12,45:15,可以看到,并不是确定的每秒输出一次,也就是并不是每秒调用60次selector!
那么为什么一开始那么平稳,突然就变了呢。我在一个tableView中,每个cell加了很多复杂的UI,所以GPU去渲染时很耗费性能,导致fps并不能以60的平稳状态保持,selector的调用也就相应的变化了。
答:CADisplayLink每当屏幕刷新一次就会调用一次selector,非常精确。但是,应为屏幕刷新并不是一成不变的每秒60次,所以每秒调用固定次数的说法并不正确!
(虽然一个好的应用,fps应该相对平稳)
对于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应该相对平稳)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C++中获取UTC时间精确到微秒的实现代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法