我试图找出保留周期的原因,并发现这很可疑。这对我来说是一个有用的模式,但是这段代码会创建一个保留周期吗?
myVC: UIViewController {
private lazy var cancelButton: UIBarButtonItem = {
return UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(onTapCancel))
}()
}
Run Code Online (Sandbox Code Playgroud)
我无法判断 API 是否会self以弱或强的方式保留该引用。
不,苹果使用的目标操作机制通常不允许控件因此保留其目标,尽管找到可靠的参考有点困难。
如果您检查的文档UIControl,您将看到:
该控件不保留目标参数中的对象。当目标对象附加到控件时,您有责任维护对目标对象的强引用。
如果你检查Objective-C 编程中的概念,你会看到:
控制对象不会(也不应该)保留其目标。但是,发送操作消息的控件的客户端(通常是应用程序)负责确保其目标可用于接收操作消息。
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |