在Swift中为已分配的Closure添加弱引用?

时间:2015-05-11 22:40:07

标签: ios swift

我有以下关闭:

class BISSettingController : XLFormViewController {


  class func initializeForm() -> XLFormDescriptor {
    var form : XLFormDescriptor
    var section : XLFormSectionDescriptor
    var row : XLFormRowDescriptor


    form = XLFormDescriptor()
    row = XLFormRowDescriptor(tag: "tag", rowType: XLFormRowDescriptorTypeButton, title: "Title")
    row.action.formBlock = {[weak self](sender: XLFormRowDescriptor!) -> Void in
         self?.deselectFormRow(sender)
    ...
    }
  }

}

我想在闭包内使用self作为弱引用。但是当我构建代码时,我收到以下错误:

'weak' cannot be applied to non-class type 'BISSettingController.Type'

如何解决这个问题才能让它发挥作用?

2 个答案:

答案 0 :(得分:1)

问题是这是一个类方法(class func)。在类方法中,self表示。代表该类的self不需要内存管理;这个课程不能“泄漏”,因为无论如何它仍然适用于应用程序的生命。因此,您无法将对类的引用描述为weak

答案 1 :(得分:0)

根据您收到的错误消息,听起来自己不是对象,因此您根本不需要访问列表。

您可以发布有关包含此代码的对象的更多信息吗?

编辑:

查看更新后的问题,您使用的代码似乎是在类方法中,而不是实例方法。但是,从类方法看,这段代码似乎没有用。