完了ハンドラー ブロックを受け入れるラッパー メソッドを作成しようとしています。このブロックは、別の完了ハンドラーに渡されます。問題は、何をしても、完了ハンドラーが呼び出される前に割り当てが解除されることです。ほとんどのロジックを取り除いたメソッドを次に示します。
+ (int) syncWithCompletion:(void (^)(NSError *error))completion;{
//Copy the block argument and make it available to the block scope
__block void (^completionBlock)(NSError *error) = [completion copy];
// The is an AFNetworking operation
[af.sharedHTTPClient enqueueBatchOfHTTPRequestOperations:syncOperations progressBlock:nil completionBlock:^(NSArray *operations) {
// Call my copied block... but it's already been deallocated
completionBlock(error);
}];
return somevariable;
}