在swift 2.0中,正确的闭包声明是什么?我已经看过如下所示的例子,但它似乎对我不起作用。
在SomeClass
:
var successBlock: (Bool) -> () = { _ in }
它会像这样调用:
self.successBlock(true)
然后在SomeOtherClass
:
let someClass = SomeClass
someClass.successBlock {
success in
//code here
}
这会给我一个错误:(_) -> is not convertible to Bool
我试过谷歌搜索一下但没有运气...... 使用swift 2.0是否有语法更改,还是我?
答案 0 :(得分:2)
如果您尝试设置 successBlock
,则应使用=
符号进行
someClass.successBlock = { success in
// code here
}
编辑:你提到你只希望你的其他班级听#34;但是"听"意思?如果你想在每次调用闭包时调用某个值并根据它做一些事情,你可能想要一个闭包数组:
var successBlocks : [Bool -> Void] = []
你可以像这样调用:
let value = true
successBlocks.forEach{ $0(value) }
当您想要收听调用时,您可以这样做:
someClass.successBlocks.append( { success in
// do the stuff
} )
它不会覆盖数组中已有的任何其他闭包,所以可能是你想要做的。