闭包内部调用函数,Swift

时间:2019-12-11 22:16:53

标签: swift function closures

private func showOrder() {
        disableButtons()
        var count = 0

        _ = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { time in

            self.popColor(color: self.colorOrder[count])
            count += 1

            if count == self.colorOrder.count {
                time.invalidate()
                self.depopAllButtons()
                self.enableButtons()
            }
        }
    }

在此功能中,我正在遍历颜色数组。 popColor()方法用于向屏幕上的按钮添加阴影等。

我遇到的问题是popColor()函数似乎在执行完闭包后执行,因此它总是落后于应该出现的位置。导致的错误是循环的最后一次迭代中,最后一种颜色不执行其popColor()。

是否可以像我在这里用popColor()那样在闭包内部调用函数?

1 个答案:

答案 0 :(得分:0)

我已经编写了一些小改动的代码:

var count = 0
_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { time in
    debugPrint("set color")
    count += 1
    if count == 3 {
        time.invalidate()
        debugPrint("disable set color")
    }
}

控制台显示:

"set color"
"set color"
"set color"
"disable set color"

您的计时器工作正常。在其他地方寻找问题。