我正在尝试使用我的iPhone应用中的在线数据。但是因为这个我生气了:
我有使用NSURLConnection下载数据的对象。在单独的线程中使用连接(和其他东西)开始工作的方法 - [ NSThread detachNewThreadSelector:@selector( doConnectionInNewThread ) toTarget: self withObject: nil ];
加载数据时(connectionDidFinishLoading)我将它们提供给我的viewController。这一切都很好。当我使用断点或NSLog时,我已准备好在UITableView中显示数据。当我调用reloadData时,没有任何事情立即发生。它可能在2秒后重新加载数据(在此延迟后调用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
)。
但是当我滑动tableView时,它会立即重新加载数据。所以连接等工作正常,但它不会重新加载数据。为什么?我认为这可能是由于URLConnection阻止了mainThread。但是现在我在单独的线程中使用它并且它仍然是相同的......
答案 0 :(得分:2)
您是否在分离的线程中访问表视图?
确保使用以下命令更新主线程上的UI:
-performSelectorOnMainThread:withObject:waitUntilDone:
答案 1 :(得分:0)
您的tableView.reloadData
函数可能不在主线程中运行,因此您应在tableview.reloadData()
中使用DispatchQueue.main.async
在主线程中运行。
示例:
DispatchQueue.main.async {
tableview.reloadData()
}