// delegate
// 当一个协议 没有任何的父协议时,说明它是可以被 struct, enum 实现的,声明一个实现了这个代理类型的实例时,就不能使用 weak。如果要使用 weak, 就需指定实现让这个协议的是 class ,让它实现 : class
// 另一种做法是,在将协议声明为 oc 类型的,在前面加 @objc 关键字。因为 OC 协议都只有类能实现,用weak 也就合理了
// 我们通常的做法是,新建协议的时候,让他实现 NSObjectProtocol
protocol MyClassDelegate: NSObjectProtocol {
func method()
}
class MyClass {
weak var delegate: MyClassDelegate?
}
网友评论