有没有办法像这样向NSOperationQueue添加块

tim*_*one 10 block nsoperationqueue ios

我试图了解NSOperationQueue,并试图创建最简单的例子.我有以下内容:

NSOperationQueue *myOQ=[[NSOperationQueue alloc] init];

[myOQ addOperationWithBlock:^(void){
  NSLog(@"here is something for jt 2");
}];
[myOQ addOperationWithBlock:^(void){
  NSLog(@"oh is this going to work 2");
}];
Run Code Online (Sandbox Code Playgroud)

但是想这样做:

void  (^jt)() = ^void(){
  NSLog(@"here is something for jt");
};

void (^cl)() = ^void(){
  NSLog(@"oh is this going to work");
};

NSOperationQueue *myOQ=[[NSOperationQueue alloc] init];

[myOQ addOperation:jt];
[myOQ addOperation:cl];
Run Code Online (Sandbox Code Playgroud)

后一种形式可能吗?我可以将块转换为NSOperation吗?

thx提前

Rob*_*Rob 29

你可以:

NSBlockOperation *jtOperation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"here is something for jt");
}];

NSBlockOperation *clOperation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"oh is this going to work");
}];

[myOQ addOperation:jtOperation];
[myOQ addOperation:clOperation];
Run Code Online (Sandbox Code Playgroud)

话虽如此,我通常会这样做,addOperationWithBlock除非我NSOperation出于其他原因需要对象指针(例如,在操作之间建立依赖关系等).