私が理解したところでは、__block 修飾子を使用することで、ブロック (およびキュー?) 間でオブジェクトを使用できるようにすることができます。
-(void)performRequest: (void (^)(NSArray* outcome))completion
{
dispatch_async(dispatch_get_global_queue(0,0), ^{
// do some request
__block NSArray * result = [[NSArray alloc]init]; //Outcome of the request.
completion(result);
});
}
メインスレッドで完了ブロックが dispatch_async すると仮定しましょう
__block 識別子のない値型でこれを行うことができるはずだと思います。私は正しいですか?
-(void)performRequest: (void (^)(int outcome))completion
{
dispatch_async(dispatch_get_global_queue(0,0), ^{
// do some request
int result = 10; //Outcome of the request.
completion(result);
});
}