[英]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.