我正在为iOS编写RSS阅读器应用程序。将有一个tableView,其中包含Feed中的文章列表。该tableView的每个单元格都将包含一个图像 - 文章的缩略图。我希望它能够加载最有效的方式:
我有点卡住了使用的方法。最棘手的是(5)。这是必需的,因为app很可能用于窄带宽条件。所以app必须最好利用低连接速度。
现在我有NSOperationQueue用于图像加载。 maxConcurrentOperationCount为2.加载NSOperations是非并发的(以Apple的术语表示),即在单独的线程中执行。每个NSOperation只是一个同步NSData的initWithContentsOfURL。这种方法的问题是我无法控制已经执行的加载操作。事件无法取消它们!
理想的情况是,我可以随时更改ALL(包括已经执行)的加载操作的优先级。所以我正在考虑使用异步NSURLConnection加载切换到并发(用Apple的术语)NSOperations。这样我就可以通过查看didReceiveData之间的isCancelled prop来取消操作。我打算将该取消用于优先级降低的操作:存储已经通过操作加载的数据,取消它,以新的(较低的)优先级添加到队列并恢复下载。希望并发(用Apple的术语)操作不会减慢UI,因为加载任务不是CPU密集型的,并且可能有很长的滞后。
此外,我不确定如何确定操作的优先顺序。由于NSOperationQueuePriority只有5个可能的值。即如何维护可见(从上到下)和不可见(从近到远)缩略图的加载顺序?
请告知)