2014-10-13 1 views
0

로컬 블록 변수 offDownloadBlock을 사용하여 addOperationWithBlock 메소드 NSOperationQueue을 사용하는 방법은 무엇입니까?NSOperationQueue의 addOperationWithBlock에 대한 로컬 블록 변수

void (^offDownloadBlock)(NSString*, NSDictionary*); 
offDownloadBlock = ^(NSString* key, NSDictionary* obj) {...}; 

NSOperationQueue *q = [[NSOperationQueue alloc] init]; 
[q addOperationWithBlock:offDownloadBlock(key, obj)]; 

답변

0

이렇게하는 이유는 없습니다. NSOperationQueue의 -addOperationWithBlock :은 블록이 매개 변수를 사용하지 않고 아무것도 반환하지 않음을 의미하는 - (void)addOperationWithBlock:(void (^)(void))block으로 정의됩니다. 당신과 같이 코드에서이를 사용할 수 있습니다

NSString *key = @"Some key"; 
NSDictionary *obj = // Some dictionary; 
[q addOperationWithBlock:^(){ 
    // your code goes here 
    // use your key and obj here to do something that will run on the queue 
}]; 

편집 코멘트 : 재귀 블록을 확인하려면, 당신은 블록 내에서 블록을 호출해야합니다. 그런 일을 할 수있는 유일한 방법은 다음과 같이 당신의 블록을 정의하는 것입니다 :

__block void (^myBlock)(); 
myBlock = ^(){ 
    NSLog(@"Running"); // This will run forever 
    myBlock(); 
}; 
myBlock(); 

나는 이것이 당신이 거의 모든 경우에 불구하고 싶지 무엇 가능성이 말할거야.

+0

나는 그것을 이해하지만이 블록을 재귀 적으로 호출하길 바란다. 의미,'offDownloadBlock' 안에'offDownloadBlock'을 호출하고 싶습니다. –