使用NSOpretion和NSOperationQueue进行多线程开发就是将NSOperation放到NSOperationQueue这个队列中,线程就会依次启动。NSOperationQueue就是一个队列。而NSOperation是相当于一个抽象类,不能直接使用,所以我们一般都使用它的两个子类来实现:NSInvocationOperation和NSBlockOperation,它们本质没有很大区别,只是block使用更方便一点。我们可以在viewDidLoad看看NSOperation提供了哪些API
NSOperation * operate = [[NSOperationalloc]init];
if (!operate.isExecuting) {//是否执行执行中
if (!operate.isReady) {//任务是否准备好
[operate start];//开始执行
}
}
//7.0之前isConcurrent判断同步、异步,7.0之后
if ([UIDevicecurrentDevice].systemVersion.intValue>7.0) {
if (operate.isAsynchronous) {
NSLog(@"异步");
}else{
NSLog(@"同步");
}
}else{
if (operate.isConcurrent) {
NSLog(@"异步");
}else{
NSLog(@"同步");
}
}
if (operate.isFinished) {//任务是否完成
NSLog(@"完成");
}
if (operate.isCancelled) {//任务是否取消
[operate cancel];//任务取消
}
待续!