DispatchQueue在while循环中不起作用

时间:2017-09-10 19:18:19

标签: ios swift xcode while-loop nstimer

Screen capture of frozen screen

编辑: 我一旦重新启动计算机并尝试了模拟器agian终端显示的消息,终端检测到系统在交换空间上运行不足。可以自动调整回滚缓冲区以节省交换空间。我不知道该怎么做这个消息。

在发布此问题之前,我想要一种方法来显示3个连续的图像。我决定

DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
    self.icon1.isHidden = false
}   // display image after 3 sec

我使用这种延迟执行代码的方法,通过改变延迟的长度来显示和隐藏所有图像。

当" start"按下按钮但是当我尝试创建while循环时,当我按下开始按钮时模拟器冻结

这是我的代码:

@IBAction func start(_ sender: Any) {
    var x = Int(0)

    repeat {
        DispatchQueue.main.asyncAfter(deadline: .now() + stepperval.value/4) {
            self.icon1.isHidden = false
        }

        // stepperval is the current value of the UIStepper

        DispatchQueue.main.asyncAfter(deadline: .now() + stepperval.value/4*2) {
            self.icon2.isHidden = false
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + stepperval.value/4*3) {
            self.icon3.isHidden = false
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + stepperval.value) {
            self.icon1.isHidden = true
            self.icon2.isHidden = true
            self.icon3.isHidden = true

            self.direction.isHidden = false
            self.direction.image = self.derection[Int(arc4random_uniform(4))]
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + stepperval.value*2) {
            self.direction.isHidden = true

            x = x+1
        }
    } while x < Int(4) //Loop 4 times
}

按下开始按钮icon 1,2,3 应该在certian inteval之后出现eatch图像, 然后再次隐藏图像 &#39;方向&#39;出现。然后循环4次。

0 个答案:

没有答案