1、block
self.dataBack = { [weak self] (result) in
self?.dataArr = result as! [String]
}
block 通过 [weak self] 将self的强引用改为弱引用
2、delegate
一般声明delegate 属性的时候,用weak修饰。tableView的delegate实现也是如此
weak open var delegate: UITableViewDelegate?
1)自定义代理协议的时候,应继承NSObjectProtocol,这时使用weak不会报错。
因为'weak' must not be applied to non-class-bound 'CustomViewDelegate'; consider adding a protocol conformance that has a class bound
得修饰一个有类绑定的协议
2)@objc
声明代理协议的时候,如果前面有@objc关键字的话, 也可以用weak修饰delegate属性