all*_*Nit 3 iphone multithreading nsoperationqueue nsinvocation
在上下文中要求以下两个问题来维护NSOperationQueue和NSInvocationOperation.
由于我使用此概念下载多个视频,如何在完成下载视频后从NSOperationQueue中删除/释放添加的NSInvocationOperation?
而且,如果我想在下载过程中停止下载特定视频,我该怎么办?
下载完视频后,如何从NSOperationQueue中删除/释放添加的NSInvocationOperation?
完成时自动从队列中删除操作,即 - isFinished返回true时.
而且,如果我想在下载过程中停止下载特定视频,我该怎么办?
如果要在中途停止操作,则必须向其发送-cancel消息.然而,这不会神奇地停止运行.您的任务需要定期检查是否已取消,如果事实证明已经完成,则需要自行完成.因此,您需要以块的形式下载视频,并在每个块后检查操作的取消状态.以下伪代码可能会有所帮助:
while (![myOperation isCancelled] && thereIsMoreData)
{
download a chunk of data and save it
}
Run Code Online (Sandbox Code Playgroud)
这意味着,例如,您不能使用NSURLConnection's -sendSynchronousRequest:returningResponse:error:来获取数据,因为在已经下载了所有数据之前,它将无法检查操作的取消状态.
| 归档时间: |
|
| 查看次数: |
4972 次 |
| 最近记录: |