为什么我们应该使用NSOperationQueue?

3

1) 为什么我们应该使用 NSOperationQueue

2) 使用它有什么好处?

3) 我们能否通过 NSOperationQueue 同时实现多个同步web操作?

4) 我们为什么要在 UITableView 的懒加载中使用 NSOperationQueue ?没有 NSOperationQueue 可以完成吗?


3
请阅读《并发编程指南》中关于操作队列的部分。链接为:http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html - 0x8badf00d
伙计,那里有一堆问题。NSOperationQueue并不是完成很多任务的唯一方式,所以也许你可以先查看一下并发指南,然后再专注于你的问题方向。 - Carl Veazey
将来请尽量用更好的方式提出问题。 - iPhone Programmatically
1个回答

10
为什么我们应该使用NSOperationQueue?
当工作单元是NSOperation或其子类时,您应该使用NSOperationQueue来实现并发。或者与其他需要NSOperationQueue的API一起使用,例如NSNotificationCenter上的addObserverForName:object:queue:usingBlock:方法。
使用它有什么优势?
当要异步执行的工作单元可以封装在NSOperation对象中时。也许您正在问什么是相对于其他异步API的优势?这在很大程度上取决于您需要和管理的抽象级别。正如一个作者所说:“始终使用可用的最高级别的抽象,并在测量显示需要时降到较低级别的抽象。”
我们可以通过NSOperationQueue同时实现多个同步网络操作吗?
当然可以。有很多在线教程都讲到了这个问题,比如由著名的Marcus Zarra所写的这个
为什么我们在Tableview的懒加载中使用NSOperationQueue?
和任何并发技术一样,我们使用它是为了使工作更快或避免阻塞UI。在你提到的情况下,主要是为了不阻塞UI进行长时间的任务。
没有NSOperationQueue,难道不行吗?
当然可以。可以使用NSThread、GCD等方法。

NSBum先生,您的回答非常好! - Ganesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接