Realank的iOS专题iOS DeveloperiOS多线程

NSOperation简介

2016-01-12  本文已影响239人  JoyceZhao
@interface ViewController ()

/** 队列 */
@property(nonatomic, strong)NSOperationQueue *queue;

@end

@implementation ViewController
/**
 *  开始执行
 */
- (IBAction)startBtnClick {

    // 创建操作对象
    NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
        for (int i = 0; i < 10000; i++) {
            NSLog(@"1---%zd---main------%@", i,[NSThread currentThread]);
        }
    }];
    NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
        for (int i = 0; i < 10000; i++) {
            NSLog(@"2---%zd---main------%@", i,[NSThread currentThread]);
        }
    }];
    NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{
        for (int i = 0; i < 10000; i++) {
            NSLog(@"3---%zd---main------%@", i,[NSThread currentThread]);
        }
    }];

    // 创建队列
    self.queue = [[NSOperationQueue alloc] init];

    // 设置最大并发数
    self.queue.maxConcurrentOperationCount = 1;

    // 把操作添加到队列
    [self.queue addOperation:op1];
    [self.queue addOperation:op2];
    [self.queue addOperation:op3];
}

/**
 *  暂停
 */
- (IBAction)suspendBtnClick {

    [self.queue setSuspended:YES];
}

/**
 *  取消
 */
- (IBAction)cancleBtnClick {

    [self.queue cancelAllOperations];
}

/**
 *  恢复
 */
- (IBAction)resumeBtnClick {

    [self.queue setSuspended:NO];
}

@end
// 控制器代码
@interface ViewController ()

/** 队列 */
@property(nonatomic, strong)NSOperationQueue *queue;

@end

@implementation ViewController

- (IBAction)startBtnClick {

    // 封装操作
    ZQOperation *op = [[ZQOperation alloc] init];

    // 创建队列
    self.queue = [[NSOperationQueue alloc] init];

    // 设置最大并发数
    self.queue.maxConcurrentOperationCount = 1;

    // 把操作添加到队列
    [self.queue addOperation:op];

}

- (IBAction)cancelBtnClick {

    [self.queue cancelAllOperations];
}
@end

}

```
上一篇 下一篇

猜你喜欢

热点阅读