Swift weak delegate

protocol MyClassDelegate {
    func method()
}

class MyClass {
    weak var delegate: MyClassDelegate?
}

需要使用delgate时,为了防止循环引用需要添加weak关键字,但是上面的代码XCode会报错。因为swift里delegate除了给class对象使用,也可以给struct使用,而struct对象是用copy方式不是引用计数来管理对象生命周期的。所以需要指定delegate只能被class对象实现,需添加class关键字。

protocol MyClassDelegate: class {
    func method()
}

  • http://swift.diagon.me/delegate-weak/
  • http://swifter.tips/delegate/

你可能感兴趣的:(Swift weak delegate)