簡體   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