10

私は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に変換できますか?

事前にt​​hx

4

3 に答える 3

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

そうは言っても、他の理由(たとえば、操作間の依存関係を確立するためなど)でオブジェクトポインタがaddOperationWithBlock本当に必要な場合を除いて、通常はそうします。NSOperation

于 2013-01-11T16:45:26.030 に答える
2

あなたもすることができます

[operationQueue addOperationWithBlock:^{
    // Stuff
})];
于 2015-11-05T09:19:35.167 に答える
0

迅速

let networkingOperation = NSBlockOperation(block: {
                             // Your code here
                          })
于 2016-04-03T11:41:45.220 に答える