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()
}