在Swift中多线程时更改UIElements时出错

时间:2014-11-03 23:17:52

标签: swift

在下面的代码中,我对我的app进行多线程处理,以便用户可以在处理数据时与UI进行交互。但是,在处理数据的搜索功能结束时,我将UITextView的文本设置为“完成”,但是我收到以下错误:

***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'只在主线程上运行!'


有谁知道我做错了什么?

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(false)

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0), { ()->() in

    self.Search()


    dispatch_async(dispatch_get_main_queue(), {

    })
})


}

1 个答案:

答案 0 :(得分:0)

正是因为您要将UITextView更新为"完成"该应用程序表现不可预测。根据Apple的文档:

  

一般来说,线程很难编程,当然,Cocoa Touch的大部分只能从主线程中调用。

更新您的"搜索"功能,以确保它不包含任何UI更新。