从同一范围调用块/闭包

时间:2017-06-22 17:40:44

标签: ios swift timer closures

我正在创建一个在黑白之间快速切换屏幕的应用。为此,我使用的是Timer

我的问题归结为无法在计时器声明中调用同一范围(changeBackgroundColor)中的函数。

let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true, block: changeBackgroundColor) 
//Error: 'Cannot convert value of type '(ViewController) -> (Timer) -> Void' to expected argument type '(Timer) -> Void'

func changeBackgroundColor(timer: Timer) -> Void {
    //change the color of the screen (not the issue here)
}

我以为我已经理解了闭包,但这里的示波器似乎存在问题。

1 个答案:

答案 0 :(得分:1)

使用计时器“块”版本的重点是避免创建单独的函数。

您应该按如下方式编写:

let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { (timer) in
    // change the color of the screen
}