我有一个简单的类,其中将一个块声明为变量:

class MyObject : NSObject
{
    var progressBlock:(progress:Double) -> ()?

    init() { }
}

据我了解,如果以这种方式定义,则无需在progressBlock初始化程序中初始化init()
但是,当我尝试编译时,出现了他的错误:
Property 'self.progressBlock' not initialized at super.init

所以问题是,如何创建 optional progressBlock,所以不会出现此错误?

最佳答案

按照您编写它的方式,编译器假定progressBlock是一个返回一个 optional 空元组的闭包,而不是一个返回一个空的元组的 optional 闭包。尝试像这样编写它:

class MyObject:NSObject {
    var progressBlock:((progress:Double) -> ())?
    init() {
        progressBlock = nil
        progressBlock = { (Double) -> () in /* code */ }
    }
}

10-07 18:47