gcdtest1串行队列预加载示例
串行队列的预加载操作,在多 iOS 项目里都挺常见的,是需要先加载一批图片或文件再展示界面的场景。gcdtest1
这个源码例子就还蛮不错,逻辑清晰,没啥花哨套路,适合拿来参考。
GCD 的串行队列有个挺实用的特性,就是你丢进去的任务,会一个接一个顺着执行,绝不会乱序。适合你有前后顺序要求的任务,比如读取缓存、写入文件那种。
源码里率用的是dispatch_queue_create
自定义的串行队列,任务通过dispatch_async
加进去,一边预加载,一边保持主线程流畅,UI 不掉帧,用户体验也就跟着上去了。
加载完资源要更新界面?那记得用dispatch_get_main_queue
回到主线程。不然你在子线程更新 UI,分分钟崩给你看。还有像dispatch_group
、dispatch_barrier_async
这些,也在源码里配合着用来做同步。
要注意哦,如果你任务里有网络求或者大文件读取,尽量别用dispatch_sync
,容易卡线程,调试也麻烦。异步才是王道,轻巧还不阻塞。
如果你现在在搞预加载相关的功能,或者刚开始学 GCD,拿gcdtest1
练手是挺好的选择。感兴趣的也可以看看下面这些文章,都是围绕 GCD 和多线程的实战案例。
32.68KB
文件大小:
评论区