使用等待函数完成的快速循环

时间:2017-11-20 03:11:47

标签: swift

我是新手,正在尝试学习和编写我的第一个应用。一个简单的应用程序开始...所以我试图创建一个循环,将完全执行一系列功能一定次数(轮次)。我已经找到了代码体,我试图实现DispatchGroup()来等待函数执行:

@IBAction func buttonPush(_ sender: Any) {

    let group = DispatchGroup()

    while rounds >= 0 {

        group.enter()

        DispatchQueue.main.async {

            if self.isGameStarted == 0 {

                self.setTimer()
                self.resetVariables()
                self.runClock()

                self.roundLabel.text = String(self.self.rounds)
                group.leave()

            } else if self.isGameStarted >= 1{

                self.self.isGameStarted = 0
                self.timer.invalidate()
                group.leave()

            }
        }

        group.notify(queue: .main) {
            self.rounds -= 1
        }

    }
}

这是DispatchGroup()之前的原始主体。问题是while循环在函数运行之前完成,我想(最好的猜测)。我从17/19/17使用最新版本的swift。

@IBAction func buttonPush(_ sender: Any) {

    while rounds >= 0 {

            if isGameStarted == 0 {

                setTimer()
                resetVariables()
                runClock()
                roundLabel.text = String(rounds)

            } else if isGameStarted >= 1{

                isGameStarted = 0
                timer.invalidate()
                rounds -= 1

            }
        }
    }

12/13/17编辑。这适用于每个按钮按下和while循环注释掉。然而,随着while循环取消注释它进入无限循环...

     @IBAction func buttonPush(_ sender: Any) {

    //while rounds >= 0 {

       if isGameStarted == 0 {

                setTimer()
                resetVariables()
                runClock()
                roundLabel.text = String(rounds)
                DispatchQueue.main.asyncAfter(deadline: .now() + Double(timeRoundTot){
                self.rounds -= 1

            } else if isGameStarted >= 1{

                isGameStarted = 0
                timer.invalidate()

            }
        }

    //}
}

0 个答案:

没有答案