开发者社区 问答 正文

一个关于 Swift 闭包类型的属性在构造器中的问题

我查了一下文档,上面说在构造器中,必须把当前类的属性全部初始化一边之后,才能调用父类的构造器,这对于 闭包 类型的属性来说有些奇怪,如果其他类型的属性标注为可选类型之后,是可以在父类构造器之后给它赋值的,闭包 类型却不行,这是为什么?

var callback:() -> Void? //无论是不是可选类型,都必须在super.init之前,否则出错

init(frame: CGRect, touchUpInside:() -> Void) {
    super.init(frame: frame)
    self.callback = { touchUpInside($0) }
}

求各位大神解答。。

展开
收起
a123456678 2016-07-28 11:58:33 1996 分享 版权
1 条回答
写回答
取消 提交回答
  • 你应该写: var callback: (() -> Void)?

    问题里面的那种类型声明是错的,那表示的是闭包返回值是 Void?,而非闭包为 optional。

    2019-07-17 20:01:19
    赞同 展开评论
问答分类:
问答地址: