问题描述
在用tableVIew或者scrollView加载多张高清大图的时候,页面会卡顿。如下图
原因
runloop在一次渲染中,需要渲染十几张高清大图,所以卡主了
解决思路
每次Runloop循环,只渲染一张大图!!
1.监听Runloop的循环!!
2.将加载大图的代码!放在一个数组里面!!
3.每次Runloop循环,取出一个加载大图的任务执行!!
解决步骤
需要用到C语言的框架CFRunLoopRef。
FRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。
NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线程安全的。
CFRunLoopRef 的代码是开源的,你可以在这里 http://opensource.apple.com/tarballs/CF/CF-855.17.tar.gz 下载到整个 CoreFoundation 的源码。
1.监听Runloop的循环
在CFRunloop中可以看到
/* Run Loop Observer Activities */
typedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
kCFRunLoopEntry