Swift - 将闭包传递给方法

时间:2015-03-26 12:08:50

标签: ios swift

我刚刚开始学习Swift,距离iOS开发已有两年了,我似乎陷入了关闭作为参数语法。我在课堂上有以下方法:

func onFollwersButtonTouched(cb: () -> Void) {
    self.onFollowingTouchedCb = cb
}

我尝试在另一个类上设置此回调:

cell.onFollowersTouchedCb({ () -> Void in

})

此代码无法编译。编译器错误是:

Error:(115, 14) cannot convert the expression's type '() -> Void' to type '() -> Void'

我不知道发生了什么。我在Apple的Swift书上尝试了这种语法,但它也没有成功。

2 个答案:

答案 0 :(得分:1)

您应该使用闭包参数调用方法:

cell.onFollowersTouched({ () -> Void in

})

或将变量分配给变量:

cell.onFollowersTouchedCb = { () -> Void in

}

您当前正在使用closure参数调用onFollowersTouchedCb,而没有声明参数。

答案 1 :(得分:1)

此:

cell.onFollowersTouchedCb({ () -> Void in

})

没有设置闭包。您需要执行实际分配:

cell.onFollowersTouchedCb = {
    // Do something
}