每个单元格或每个UIViewController一个NSOperationQueue?

时间:2016-07-14 07:51:34

标签: ios uitableview concurrency nsoperation nsoperationqueue

我有一个UITableView,当单元格出现时,我会逐个从远程服务器下载数据。

每个单元格创建一个NSOperationQueue是否安全?我担心这可能会引发线程爆炸(如果线程太多)。 每个单元实例的NSOperationQueue更容易开发,因为一旦单元格被重用,我就可以取消NSOperationQueue上的所有操作。

相反,如果我每个UIViewController使用一个NSOperationQueue,那么我可以将NSOperationQueue传递给单元格,并且单元格可以将其NSOperation添加到该队列。但是,我需要以某种方式处理,以便在重用单元格时取消该操作(在UIViewController内的字典中存储对NSOperation的引用等)。

大多数教程在UIViewController中都有一个NSOperationQueue,但我看过一个他为每个单元格使用一个NSOperationQueue。

1 个答案:

答案 0 :(得分:0)

在下面给出的教程中,提供了取消操作的选项,并根据您的要求恢复操作。

Ray Wenderlich的一个很好的例子http://www.raywenderlich.com/19788

<强>更新

如果您在NSOperationQueue中使用UITableView,那么您需要妥善管理。例如,AFNetworking库使用NSOperationQueue从URL进行图像下载以及其他可以正常工作的任务。所以我的建议是如果你想在NSOperationQueue中使用UITableView然后正确管理它,否则它肯定会导致将来处理长数据的问题。