使用while循环时的问题

时间:2016-11-23 18:55:21

标签: ios swift

当我使用如下所示的简单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,而不会弄乱应用程序的其他部分?

1 个答案:

答案 0 :(得分:1)

听起来你需要解决一些线程问题,但无论如何这通常是一个糟糕的方法。

如果您需要在数据库更改时更改UI中的某些内容,则应该使用来自数据库的通知或侦听器/委托,而不是经常检入您的VC。