iOS开发中使用NSOperationQueue进行多线程操作

By | 2012 年 6 月 20 日

NSOperationQueue是iOS的SDK中提供的一个非常方便的多线程机制,用它来开发多线程非常简单。

可以把它视为一个线程池,还可以调用方法
-(void)setMaxConcurrentOperationCount:maxConcurrentNumber
来设置它的并行程度,默认为-1,即最大并行。

还可以通过NSOperation的方法来指定并行的操作之间的依赖关系:

  1. [theLatterTask addDependency:theBeforeTask];

在一个队列之中,可以加入NSOperation来指定执行的任务:
1.可以重载NSOperation的main方法来指定操作;
2.可以使用NSInvokeOperation通过指定selector和target来指定操作;
3.可以使用NSBlockedOperation通过Block来指定操作
这三个方法都非常方便。

以下是一个例子:

  1. _tasksQueue=[[NSOperationQueue alloc] init]; 
  2.     
  3. NSBlockOperation *getImageTask = [NSBlockOperation blockOperationWithBlock:^{
  4.         UIImage * image = nil;
  5.         NSData *imgData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] returningResponse:nil error:nil];
  6.         if (imgData >> imgData.length > 0) {
  7.             image = [UIImage imageWithData:imgData];
  8.         }
  9.     }];
  10.  
  11. [_tasksQueue addOperation:getImageTask];

发表评论

电子邮件地址不会被公开。 必填项已用*标注