在下面的代码中,我对我的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(), {
})
})
}
答案 0 :(得分:0)
正是因为您要将UITextView
更新为"完成"该应用程序表现不可预测。根据Apple的文档:
一般来说,线程很难编程,当然,Cocoa Touch的大部分只能从主线程中调用。
更新您的"搜索"功能,以确保它不包含任何UI更新。