ios - Uitableview 不会滚动做循环

标签 ios uitableview for-loop

我注意到我的 uitableview 在执行 N^3 for 循环的 CPU 密集型 O 时不会响应用户交互。

是否有我应该知道的 dispatch_async 来让我的 for 循环和用户交互同时发生?

看来我要找的东西叫

 QOS_CLASS_USER_INITIATED

通过http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1

最佳答案

作为基本规则,您应该:

  1. 仅在主线程上执行 UI 操作(例如设置 View 的背景颜色或更改标签的文本)。
  2. 在后台线程上执行长时间操作,例如密集循环。

默认情况下,您应用中的几乎所有内容都将发生在主 (UI) 线程上,除非您另有说明。您是正确的,因为您可以使用 dispatch_async 在后台线程上执行循环以释放主线程来处理 UI。例如,您可以(在 Swift 中):

// Process something large, jump to background thread:
dispatch_async(dispatch_get_global_queue(0, 0), {
    
    // Long loop...
    for var i = 0; i < 10000; ++i {
        // ...
    }
    
    // When finished, jump back to main thread to update UI with results:
    dispatch_async(dispatch_get_main_queue(), {
        myLabel.text = "Finished processing!"
    })
    
})

关于ios - Uitableview 不会滚动做循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482046/

相关文章:

ios - Swift3 上的 "Empty collection literal requires an explicit type"错误

ios - UIDatePicker 不显示当前日期。我该如何更新它?

iphone - 部分左侧的 UITableView 标题(如 Spotlight)

ios - 如何向原型(prototype)单元格添加两个以上的标签?

ios - 从 viewDidLoad 中调用的函数外部重新加载 UITableViewController

javascript - 我的号码查询功能不起作用,为什么?

ios - UITableView 的自定义页脚 View 不完全可见

ios - 为什么我必须在头文件中定义两次变量?

java - 这段代码如何用 for 循环形成 z 形状?

java - 如何在双/嵌套循环中脱离主/外循环?