当我使用如下所示的简单while循环时,我的应用程序的UI将会冻结:
func viewDidLoad(){
super.viewDidLoad()
while(true){
print(CheckDB());
}
}
同样,具有该程序的程序是UI冻结但它确实输出数据。当我尝试使其异步时,UI不会冻结并且我的数据仍在打印,但现在的问题是调整我的UI中的滑块在它应该打印它所在的数字时没有做任何事情,所以虽然用户界面确实在这一点上起作用,但它实际上只是用户界面,而不是别的。
func viewDidLoad(){
DispatchQueue.global(qos: .default).async {
while(true){
super.viewDidLoad()
print(CheckDB());
}
}
所以我现在的问题是,如何在后台运行一个常量循环来更新一些UI元素,比如Labels,而不会弄乱应用程序的其他部分?
答案 0 :(得分:1)
听起来你需要解决一些线程问题,但无论如何这通常是一个糟糕的方法。
如果您需要在数据库更改时更改UI中的某些内容,则应该使用来自数据库的通知或侦听器/委托,而不是经常检入您的VC。