为什么我的细胞不能同时加载?

时间:2016-04-17 09:25:21

标签: ios swift multithreading uitableview asynchronous

我正在使用后台线程从网络和主线程中获取数据来呈现我的单元格:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), {
    let _ = self.http.getInfo() { (result) in
        self.cellsArray = result

        dispatch_async(dispatch_get_main_queue(), {
            self.tableView.reloadData()
        })
        completion(completed: true)
    }
})

其中self.http.getInfo是获取网络信息的NSURLSession.sharedSession().dataTaskWithRequest方法。

当我运行我的应用程序时,我的单元格会分别显示为:第一个出现,第二个出现,下一个出现,2秒,下一个等等。

为什么他们不同时出现?而且,由于后台和主线程的使用,当我实现无限滚动并将新单元追加到现有单元阵列时,我的UITableView会跳转。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

self.tableView.reloadData()的完成处理程序中编写NSURLSession.sharedSession().dataTaskWithRequest此语句。