以下两个问题都是在上下文中提出的,以维护 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/