创build一个可选块作为variables
我有一个简单的类,我声明一个块作为一个variables:
class MyObject : NSObject { var progressBlock:(progress:Double) -> ()? init() { } }
据我所知,如果这样定义, progressBlock
不必在init()
初始化器中初始化
但是,当我尝试编译时,我得到他的错误:
Property 'self.progressBlock' not initialized at super.init
所以问题是,我如何创build一个可选的progressBlock
,所以我没有得到这个错误?
编写它的方式,编译器假定progressBlock是一个闭包,它返回一个可选的空元组,而不是返回一个空元组的可选闭包。 尝试像这样写:
class MyObject:NSObject { var progressBlock:((progress:Double) -> ())? init() { progressBlock = nil progressBlock = { (Double) -> () in /* code */ } } }
加上connor的回复。 可选块可以写成:
var block : (() -> ())? = nil
或者作为一个明确的Optional
:
var block : Optional<() -> ()> = nil
或者更好的是,自定义types
typealias BlockType = () -> () var block : BlockType? = nil