zum*_*zum 10 optional ios objective-c-blocks swift
我有一个简单的类,我将块声明为变量:
class MyObject : NSObject
{
var progressBlock:(progress:Double) -> ()?
init() { }
}
Run Code Online (Sandbox Code Playgroud)
据我所知,如果以这种方式定义,progressBlock则不必在初始化器中init()初始化
但是,当我尝试编译时,我得到了他的错误:
Property 'self.progressBlock' not initialized at super.init
Run Code Online (Sandbox Code Playgroud)
所以问题是,我如何创建一个可选项progressBlock,所以我没有得到这个错误?
Con*_*nor 25
编写它的方式,编译器假定progressBlock是一个闭包,它返回一个可选的空元组,而不是一个返回空元组的可选闭包.尝试这样写它:
class MyObject:NSObject {
var progressBlock:((progress:Double) -> ())?
init() {
progressBlock = nil
progressBlock = { (Double) -> () in /* code */ }
}
}
Run Code Online (Sandbox Code Playgroud)
添加到康纳的答复。可选块可以写为:
var block : (() -> ())? = nil
Run Code Online (Sandbox Code Playgroud)
或明确地Optional:
var block : Optional<() -> ()> = nil
Run Code Online (Sandbox Code Playgroud)
或者更好,使用自定义类型
typealias BlockType = () -> ()
var block : BlockType? = nil
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5765 次 |
| 最近记录: |