使用在NSURLSessionDelegate控制器中执行后台URLSession的IOS9应用程序。我是这样开始的:
self.session_data = [[NSMutableData alloc] init];
NSURL *url = [NSURL URLWithString:src];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionConfiguration *backgroundConfigObject = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier: @"myBackgroundSessionIdentifier"];
self.session = [NSURLSession sessionWithConfiguration: backgroundConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
self.download = [self.session dataTaskWithRequest: request ];
[self.download resume];
到目前为止一切顺利。我实现了三个委托方法。 ' didReceiveData'首先调用,然后存储数据。
- (void)URLSession:(NSURLSession *)session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data{
NSLog(@"%s",__func__);
[self.session_data appendData:data];
}
之后' didCompleteWithError'叫做。 ' completionHandler'处理程序永远不会被调用。
令人困惑的是'didCompleteWithError'消息是实际的错误对象是nil。我看过一些类似的未解答的问题。我没有在加载时离开控制器/视图。我是否需要将该功能移至AppDelegate?