iphone - 如何从 NSOperationQueue 中删除/取消 NSInitationOperation?

标签 iphone multithreading nsoperationqueue nsinvocation

以下两个问题都是在上下文中提出的,以维护 NSOperationQueue 和 NSInitationOperation。

由于我已经使用这个概念来下载多个视频,因此在下载视频完成后,如何从 NSOperationQueue 中删除/释放添加的 NSInitationOperation ?

另外,如果我想在下载过程中停止下载特定视频,该怎么办?

最佳答案

how do I remove/release added NSInvocationOperation from NSOperationQueue after completion of downloading a video?

操作完成后,即当 - isFinished 时,会自动从队列中删除。返回 true。

And also, what should I do if in case I want to stop to download specific video while the process of downloading in progress?

当您想中途停止操作时,必须向其发送 -cancel信息。 但是这不会神奇地停止操作的运行。您的任务需要定期检查它是否被取消,如果被取消则自行完成。因此,您需要分块下载视频,并在每个 block 后检查操作的取消状态。以下伪代码可能会有所帮助:

 while (![myOperation isCancelled] && thereIsMoreData)
 {
     download a chunk of data and save it
 }

这意味着,例如,您不能使用 NSURLConnection-sendSynchronousRequest:returningResponse:error: 来获取数据,因为它无法检查操作的取消状态,直到所有数据都已下载完毕。

关于iphone - 如何从 NSOperationQueue 中删除/取消 NSInitationOperation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827203/

相关文章:

iphone - IOS 应用程序及其存储在设备上的数据的大小限制

iphone - UIButton setFont 在 iPhone 2G iOS 3.1.3 上失败

iphone - iPhone 上带有白色文本和清晰背景的放大镜放大倍率

ruby - 为什么他们的 ruby​​ 脚本输出不同?

iphone - 从 URL iphone sdk 将图像加载到 tableView

multithreading - x86 上的字撕裂

java - 如何停止 Web 服务器中的线程

swift - UIActivityIndi​​cator 需要几秒钟才能被关闭

ios - 如何使 NSOperationQueue 序列化?

ios - 使用 NSOperations 时关联 NSManagedObjectContexts