以下两个问题都是在维护NSOperationQueue和NSInvocationOperation的上下文中提出的。
由于我已经使用此概念下载了多个视频,如何在视频下载完成后从NSOperationQueue中移除/释放添加的NSInvocationOperation?
另外,如果我想在下载过程中停下来下载特定的视频,我应该怎么做?
发布于 2011-07-26 17:16:19
视频下载完成后,如何从NSOperationQueue中删除/释放添加的NSInvocationOperation?
当操作完成时,即当-isFinished返回true时,该操作将自动从队列中删除。
,还有,如果我想在下载过程中停下来下载特定的视频,我该怎么办?
当您想要中途停止某个操作时,必须向其发送-cancel消息。然而,这不会神奇地停止操作的运行。您的任务需要定期检查是否已取消,如果已取消,则自行完成。因此,您需要分块下载视频,并在每次分块后检查操作的取消状态。下面的伪代码可能会有所帮助:
while (![myOperation isCancelled] && thereIsMoreData)
{
download a chunk of data and save it
}例如,这意味着您不能使用NSURLConnection的-sendSynchronousRequest:returningResponse:error:来获取数据,因为在下载所有数据之前,它将无法检查操作的取消状态。
发布于 2011-07-26 16:33:43
在NSOperation执行完该任务后,该任务将自动从队列中删除。link裁判。
创建NSOperation的子类。为每个操作保留一个标识符。将所有操作存储在数组中。当你不想让某个操作继续时,只需给该操作一个取消消息,即[_operation cancel];
https://stackoverflow.com/questions/6827203
复制相似问题