我在DB上阅读了一些关于多线程访问的内容,但仍然不确定与异步网络下载一起进行读/写操作的最佳方法。 例如,我将有一个包含来自网络图像的页面,因此我使用AFNetworking通过其URL检索它们,但我想首先检查我的数据库并在其上(或磁盘)写入检索到的图像以备将来使用。 在不阻止UI的情况下(如滚动时),最好的方法是什么? 如果我使用读取/写入的单例来执行此操作,则会阻塞主线程。 感谢您的任何提示。
答案 0 :(得分:3)
AFNetworking不是这方面的工具。相反,您可以利用NSURLCache
的内置功能 - 特别是Peter Steinberger's fork of SDURLCache。
在-applicationDidFinishLaunchingWithOptions:
中,执行NSURLCache +setSharedCache:
,其实例为SDURLCache
(分配了一定量的磁盘空间)。在请求检查缓存之前,通过UIWebView
(以及AFNetworking
进行的所有请求)将自动路由NSURLCache
。它是不显眼的,插入式的,并且正确地遵循缓存指令,它应该很好地解决你的问题。