0
我正在尝试创建一个接受完成处理程序块的包装方法,该方法块又被传递给另一个完成处理程序。问题是,无论我做什么,我的完成处理程序在被调用之前都会被释放。以下是删除了大部分逻辑的方法。将块传递给iOS中的块
+ (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;
}
你不需要复制'完成',因为你没有存储在任何地方。你也不需要'__block'变量,因为你永远不会分配到'completionBlock'。 – newacct