есть ли способ добавить блоки в 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?

Thx заранее

3 10

3 ответа:

Вы могли бы:

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 по какой-то другой причине (например, для установления зависимостей между операциями и т. д.).

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

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

Swift

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