ios 自定义的NSOperation添加到NSOperationQueue中,系统自动执行start方法

1. 创建了3个任务,加入到队列中去执行

- (void)createOperationQueue
{
    //创建一个队列
    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    
    //创建一个任务
    LJOperation *op1 = [[LJOperation alloc]init];
    op1.nameStr = @"op1";
    
    LJOperation *op2 = [[LJOperation alloc]init];
     op2.nameStr = @"op2";
    
    LJOperation *op3 = [[LJOperation alloc]init];
     op3.nameStr = @"op3";
    
    NSLog(@"block----%@",[NSThread currentThread]);
    
    //把任务添加到队列当中去,相当于调用了任务的start方法
    //倘若我们希望LJOperation执行某种方法,只需要重写start方法就可以,(系统会自动去调start方法)
    [queue addOperation:op1];
    [queue addOperation:op2];
    [queue addOperation:op3];
}


看看控制台打印的结果;

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393020] __FUNCTION__start_op1

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393051] __FUNCTION__start_op3

2017-07-07 22:49:04.195 IOSNetWorkDemo[4452:393022] __FUNCTION__start_op2


从上面的结果可以看出op1先执行,然后op3,然后op2,没有按照顺序执行。

这是为什么了?因为当我们把operation添加到队列中去后,就相当于把operation交给了系统,然后由系统决定它的执行顺序。


上面自定义的 NSOperation

@interface LJOperation : NSOperation

//随便传入一个名字,作为Operation区分用
@property(nonatomic,copy)NSString *nameStr;

@end

#import "LJOperation.h"

@implementation LJOperation

//重写NSOperation的start方法,在此处写下你想执行的方法代码
- (void)start
{
    //do something
    NSLog(@"%s",__FUNCTION__);
    NSLog(@"__FUNCTION__start_%@",self.nameStr);
}


- (void)main
{
   NSLog(@"%s",__FUNCTION__);
  // NSLog(@"__FUNCTION__main_%@",self.nameStr);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值