IOS 多线程初探(二) - Operation Object

来源:互联网 发布:网络的利与弊ppt图片 编辑:程序博客网 时间:2024/05/29 04:34

上次简单介绍了使用NSThread来创建线程的方法。今天简单介绍使用Operation Object来创建线程

Operation Object简介
将要执行的任务(即函数)封装成操作对象NSOperation,并将对象放置到NSOperationQueue中。可以设置这些任务的执行顺序和依赖关系。

  • 用NSOperation来创建线程

新建一个类继承NSOperation,覆盖main方法,然后在需要创建线程的地方实例化新类,并加入到NSOperationQueue中。

@interface MyOperation : NSOperation    @end    @implementation MyOperation    - (void)main    {        xxxxxx....    }    @end - (void) function{    MyOperation *myope = [[MyOperation alloc] init];    NSOperationQueue *q = [[NSOperationQueue alloc] init];    [q addOperation: myope];}
  • 使用NSInvocationOperation创建线程
    NSInvocationOperation也是一个target-action类型的操作,指定对象,对象的动作,动作的参数。
 - (void) function{    NSInvocationOperation *iop = [[NSInvocationOperation alloc] initWithTarget: self selector:@selector(action) object:nil];    NSOperationQueue *q = [[NSOperationQueue alloc] init];    [q addOperation: iop];} - (void)action{    xxxxx.....}
  • 使用NSBlockOperation创建线程
 - (void)functon{    NSBlockOperation *bo = [NSBlockOperation blockOperationWithBlock :^{    xxxxx.....//线程操作    }];   NSOperationQueue *q = [[NSOperationQueue alloc] init];   [q addOperation: bo];}
  • 设置线程依赖关系
    可以设置线程执行顺序,比如一个线程的执行依赖于另一个线程的结束。以NSBlockOperation为例,其它Operation操作一样。
NSBlockOperation* o1;NSBlockOperation* o2;[o2 addDependency: o1];// o2线程依赖于o1,o1结束时o2才开始
0 0
原创粉丝点击