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