NSOperation取消操作

2015-12-18  本文已影响1841人  fever105

NSOperation取消操作

对于一个自定义NSOperation来说,想要取消操作,除了需要向其发送cancel消息之外,还必须手动实现某些方法。

/*
start和main方法中,都必须周期性的对cancelled属性进行判断,如果YES,则立即退出当前,终止操作。
其中,start方法中的判断使得尚未开始的操作及时退出;
main方法中的判断使得正在执行当中的操作退出。
*/
start--检查是否取消-->main--检查是否取消
/**
 在合适的时机检查cancelled状态,退出当前任务.
 三个切入点:
 1. 开始执行任务之前
 2. 每个for循环中
 3. 阶段性的任务之间
 */
- (void)main
{
    // 正式开始执行任务之前检查
    if (self.isCancelled) {
        return;
    }
    
    for (int i = 0; i < 10; i++) {
        // 每个循环开始之前检查
        if (self.isCancelled) {
            NSLog(@"退出当前任务");
            return;
        }
        
        // 一个漫长的任务
    }
    
    // 阶段性任务之间检查
    [self processLongTask];
}
上一篇 下一篇

猜你喜欢

热点阅读