【发布时间】:2016-04-08 17:09:46
【问题描述】:
在一个 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 中?
【问题讨论】:
-
你是否在 .plist 中设置了 NSTransport 安全性?
标签: ios objective-c networking ios9