大佬教程收集整理的这篇文章主要介绍了ios – 我可以使用addOperationWithBlock取消添加到NSOperationQueue的块吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,我有一个表视图,其中包含来自Web的图像.现在我可以使用[NSOperationQueue addoperationWithBlock:]来获取它们.当单元格变为可见时,操作将被发送到队列.但有一种方法可以在单元格从屏幕滚动后取消它吗?或者是NASSperation的子类化的唯一方法?使用块是如此简单,所以在我尝试解决this example的NSOperation子类之前,我只是问这个问题…
但是,这种方法包含限制.值得注意的是,您必须将取消逻辑放在块中.如果您的块正在运行某个循环,它可以重复检查isCancelled状态,这可以正常工作.但是,如果您正处于某个网络请求的中间,那么在NSBlockOperation中执行这将很难.
使用其他答案(以及WWDC 2012视频)中概述的模式,您可以编写一个NSBlockOperation,它使用基于块的NSURLSession和轮询循环的折叠组合,如果操作被取消,则取消NSURLSessionTask,从而实现您的意图,但这是一个可怕的解决方案(低效,繁琐,使用块中的取消逻辑来阻碍您的应用程序代码等).
如果您想进行可取消的网络操作,那么NSOperation子类将是一种更加优雅的方式.第一次这样做,它看起来很麻烦,但是一旦你熟悉了这个模式,它就变成了第二个本质而且很容易实现.你会发现自己一次又一次地回到这种模式.有关进行可取消的并发操作的讨论,请参阅“并发编程指南”的“操作队列”一章的Defining a Custom Operation Object部分,特别是关于“响应取消事件”的讨论.
作为最后的观察,您将此“使用块”和NSOperation-子类描述为“任一/或”命题.但是,实际上,您实际上要将这两种技术结合起来,创建一个NSOperation子类,该子类使用块参数来指定下载完成后要执行的操作.请参阅AFNetworking,作为如何结合块和NSOperation子类的一个很好的例子.
以上是大佬教程为你收集整理的ios – 我可以使用addOperationWithBlock取消添加到NSOperationQueue的块吗?全部内容,希望文章能够帮你解决ios – 我可以使用addOperationWithBlock取消添加到NSOperationQueue的块吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。