NSURLSessionDataTask 中的 popViewController 动画工作缓慢

Posted

技术标签:

【中文标题】NSURLSessionDataTask 中的 popViewController 动画工作缓慢【英文标题】:popViewControllerAnimated work slow inside NSURLSessionDataTask 【发布时间】:2014-07-17 08:22:07 【问题描述】:
var request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
var sessionConf: NSURLSessionConfiguration =       NSURLSessionConfiguration.defaultSessionConfiguration()
var session: NSURLSession = NSURLSession(configuration: sessionConf)
let postData = session.dataTaskWithRequest(request, completionHandler: (data, response, error) in
//... there some code to work with Core Data

self.navigationController.popViewControllerAnimated(true) // <- This work slow
)

如果我将替换 println("test") 而不是 popViewControllerAnimated 只是为了测试代码与 Core Data 一起工作 - 它在一瞬间工作,我在日志中看到“测试”。但是popViewControllerAnimated 在调用整个应用程序后冻结大约 20-30 秒。我认为这是因为NSURLSessionDataTask 具有请求和响应数据的超时间隔。所以我尝试了:为3.0 制作sessionConfi.timeoutIntervalForResourcesessionConfi.timeoutIntervalForRequest,但它没有帮助。

我找到了这个NSURLSessionDataTask acting suspiciously slow

但我无法添加dispatch_async(dispatch_get_main_queue()),因为UIViewController is not a subtype of Void。我应该在哪里定义类型?

【问题讨论】:

【参考方案1】:

用that 解决这个问题。只需转换为 Swift。

var session: NSURLSession = NSURLSession(configuration: sessionConf, delegate: nil, delegateQueue: NSOperationQueue.mainQueue())

【讨论】:

以上是关于NSURLSessionDataTask 中的 popViewController 动画工作缓慢的主要内容,如果未能解决你的问题,请参考以下文章

如何获取数据以从 NSURLSessionDataTask 返回

NSURLSessionDataTask 内存警告应用程序崩溃

使用 NSURLSessionDataTask 显示文件下载进度

NSURLSessionDataTask

NSURLSessionDataTask 导致高 CPU 使用率

iOS8:NSURLSession:NSURLSessionDataTask '客户端在收到整个响应之前关闭连接'