iOS可取消后台任务的实现
我需要一个带有执行后台任务的iOS可取消后台任务的实现,ios,asynchronous,cancellation,Ios,Asynchronous,Cancellation,我需要一个带有执行后台任务的方法的类 这个方法从不同的线程被多次调用:每次调用这个方法时,我都需要停止以前分配的后台线程并启动一个新线程,因此唯一有效的后台任务是最后创建的 如何做到这一点 谢谢您可以使用NSOperation类来取消您的操作 实现可取消操作的最佳方法是使用NSOperation和NSOperationQueue。仔细阅读文档。要创建在取消时实际停止操作的NSOperation,NSOperation执行的任务必须不时检查是否已取消,然后停止操作 您可能应该创建NSOperati
方法的类
这个
方法从不同的线程被多次调用:每次调用这个方法时,我都需要停止以前分配的后台线程并启动一个新线程,因此唯一有效的后台任务是最后创建的
如何做到这一点
谢谢您可以使用NSOperation类来取消您的操作
实现可取消操作的最佳方法是使用NSOperation和NSOperationQueue。仔细阅读文档。要创建在取消时实际停止操作的NSOperation,NSOperation执行的任务必须不时检查是否已取消,然后停止操作 您可能应该创建NSOperation的子类,实现“start”方法,重写“isFinished”方法,可能重写“cancel”方法或观察“isCancelled”属性,当您检测到操作被取消时,停止操作并以兼容KVO的方式更改isFinished属性(通常通过发送willChangeValueForKey:和didChangeValueForKey) ASIHttpRequest库就是这样做的,所以最好看看它们的源代码
-(void)startMyOperation
{
//Cancel the existing operation
[self cancelOperation];
self.operation = [NSBlockOperation blockOperationWithBlock:^{
//your code to be done in the background
}];
}
-(void)cancelOperation
{
if(![self.operaion isFinished])
[self.operation cancel];
}