Есть способ добавить блоки к NSOperationQueue, как это

Я пытаюсь понять 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");
}];

Но хотелось бы сделать это:

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];

Возможно ли, что эта последняя форма? Можно ли преобразовать блок в NSOperation?

спасибо заранее

Ответ 1

Вы можете:

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];

Сказав это, я обычно делал addOperationWithBlock, если мне действительно не нужны указатели на объекты NSOperation по какой-либо другой причине (например, для установления зависимостей между операциями и т.д.).

Ответ 2

Вы также можете сделать

[operationQueue addOperationWithBlock:^{
    // Stuff
})];

Ответ 3

Swift

let networkingOperation = NSBlockOperation(block: {
                             // Your code here
                          })