NSOperationQueue应用

来源:互联网 发布:linux管道实验 编辑:程序博客网 时间:2024/05/22 15:20

NSOperation
通常直接使用NSOperation子类:NSInvocationOperation、NSBlockOperation
NSOperation 创建同步与异步操作

    //初始化一个操作,若像方式一直接调用start方法,为同步操作。即download方法会在主线程中执行.    //方式二将操作添加到队列中为异步操作    //方式一    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(downloadImage) object:nil];    [operation start];    //操作完成回调    [operation setCompletionBlock:^{        //更新UI    }];    //方式二    NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{        [self downloadImage];    }];    //设置优先级(实际工作中建议不设置优先级)    blockOperation.queuePriority = NSOperationQueuePriorityHigh;    //操作完成回调    [operation setCompletionBlock:^{        //获取主线程        [[NSOperationQueue mainQueue] addOperationWithBlock:^{            //更新UI        }];    }];    //创建操作队列    NSOperationQueue *operationQueue=[[NSOperationQueue alloc]init];    operationQueue.maxConcurrentOperationCount=5;//设置最大并发线程数    [operation addDependency:blockOperation]; //设置依赖    //直接使用操队列添加操作    [operationQueue addOperation:blockOperation];    [operationQueue addOperation:operation];    [operationQueue cancelAllOperations];//取消队列所有操作

NSOperationQueue 创建异步操作

    NSOperationQueue *operationQueue=[[NSOperationQueue alloc]init];    operationQueue.name = @"queue";    //将一个任务添加到队列    [operationQueue addOperationWithBlock:^{        //任务完成        //获取主线程        [[NSOperationQueue mainQueue] addOperationWithBlock:^{            //更新UI        }];    }];

NSOperationQueue相关属性与方法
[operationQueue currentQueue];//获取当前队列
- (void)waitUntilAllOperationsAreFinished; //阻塞当前线程等待队列所有操作完成
[operationQueue setSuspended:YES];//队列挂起

0 0
原创粉丝点击