繁体   English   中英

创建一个可选块作为变量

[英]Create an optional block as a variable

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

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

    init() { }
}

据我了解,如果以这种方式定义,则无需在init()初始化程序中初始化progressBlock

但是,当我尝试编译时,出现了他的错误:

Property 'self.progressBlock' not initialized at super.init

所以问题是,如何创建可选的progressBlock ,这样就不会出现此错误?

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

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

添加到康纳的答复。 可选块可以写为:

var block : (() -> ())? = nil

或作为明确的Optional

var block : Optional<() -> ()> = nil

或者更好,使用自定义类型

typealias BlockType = () -> ()

var block : BlockType? = nil

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM