我注意到实现NSURLSessionDataDelegate和启动任务偶尔会抛出一个EXC_BAD_ACCESS.给出错误的实际调用方法似乎有所不同,但总是来自CFNetwork.在大多数情况下,调用方法来自NSURLSession delegate_dataTask:didReceiveData:completionHandler.我在下面附上了两个不同来电的崩溃日志.我还附上了我的实施NSURLSessionDataDelegate.
不幸的是我无法可靠地重现错误,所以我没有一个示例脚本来共享.创建和启动Downloader对象最终会产生错误.对于较大的文件,它似乎经常发生.我在这里做错了吗?有没有一种好的方法从这个堆栈跟踪调试?
我已经在iOS10和10.1.1上测试了相同的结果.
执行:
class Downloader: NSObject, NSURLSessionDataDelegate {
private let url: String
var finished = false
let finishCondition = NSCondition()
init(url:String) {
self.url = url
super.init()
}
func start() {
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config,
delegate: self,
delegateQueue: nil)
guard let u = NSURL(string: url) else {
return
}
let request = NSMutableURLRequest(URL: u)
let task = session.dataTaskWithRequest(request)
task.resume()
}
func URLSession(session: NSURLSession, dataTask: …Run Code Online (Sandbox Code Playgroud)