私はAppcodaのチュートリアルに従っています:http: //www.appcoda.com/background-transfer-service-ios7/ ですが、迅速に書いています。私は迅速に作業することができないこのコード行に出くわしました
-(void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session{
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
// Check if all download tasks have been finished.
[self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
if ([downloadTasks count] == 0) {
if (appDelegate.backgroundTransferCompletionHandler != nil) {
// Copy locally the completion handler.
void(^completionHandler)() = appDelegate.backgroundTransferCompletionHandler;
// Make nil the backgroundTransferCompletionHandler.
appDelegate.backgroundTransferCompletionHandler = nil;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// Call the completion handler to tell the system that there are no other background transfers.
completionHandler();
// Show a local notification when all downloads are over.
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.alertBody = @"All files have been downloaded!";
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
}];
}
}
}];
}
私が正しくできない部分は次のとおりです。
void(^completionHandler)() = appDelegate.backgroundTransferCompletionHandler
appDelegate.backgroundTransferCompletionHandler 変数がありますが、それを void(^completionHandler)() に割り当てる方法がわかりません。void(^completionHandler)() は迅速に認識されません。
これに関するヘルプをいただければ幸いです。