为什么DispatchQueue.main.async会对单元格自动调整产生影响?

时间:2017-05-31 15:04:00

标签: ios swift uitableview uikit

我正在研究UITableView中提供的自动调整单元格。

除非我尝试将图片从UIImageView设置为DispatchQueue,否则它们效果不错。当我直接设置图像时,所有工作正常。

示例:

DispatchQueue.main.async {
  self._thumbnailImageView.image = image
}

你能否分享一下我所遗漏的内容以及为什么DispatchQueue.main.async阻止可能会影响细胞大小调整。

2 个答案:

答案 0 :(得分:1)

我的猜测是你的调用堆栈已经让表视图知道它需要布局更新,但异步的没有。

添加

tableView.setNeedsLayout()

在异步块内查看是否有效。您可能只需要在单元格上执行此操作。

答案 1 :(得分:0)

经过一番研究后我发现在这种情况下更适合使用:

DispatchQueue.global(qos: .userInteractive).async

由于服务质量等级。在我的情况下,我应该使用.userInteractive

  

与用户交互的工作,例如在main上操作   线程,刷新用户界面或执行动画。如果   工作不会很快发生,用户界面可能会出现冻结。   重点关注响应能力和绩效。

但实际上我需要更多解释为什么DispatchQueue.main.async表现不佳。