Cocoa touch 一个UIBarButton';谁的目标是创建一个保留周期?

Cocoa touch 一个UIBarButton';谁的目标是创建一个保留周期?,cocoa-touch,Cocoa Touch,我正试图找出一个循环的原因,发现这很可疑。这对我来说是一个有用的模式,但是这段代码会创建一个保留周期吗 myVC: UIViewController { private lazy var cancelButton: UIBarButtonItem = { return UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(onTapCancel)) }() } 我不知道API是

我正试图找出一个循环的原因,发现这很可疑。这对我来说是一个有用的模式,但是这段代码会创建一个保留周期吗

myVC: UIViewController {
  private lazy var cancelButton: UIBarButtonItem = {
    return UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(onTapCancel))
  }()
}

我不知道API是否会以弱或强的方式保留对
self
的引用。

不,苹果使用的目标操作机制通常不允许控件出于这个原因保留其目标,尽管找到可靠的引用有点困难

如果选中,您将看到:

控件不会将对象保留在目标参数中。当目标对象附加到控件时,您有责任保持对目标对象的强引用

如果选中,您将看到:

控制对象不(也不应该)保留其目标。但是,发送操作消息的控件的客户端(通常是应用程序)负责确保其目标可用于接收操作消息


不,由于这个原因,苹果使用的目标操作机制通常不允许控件保留其目标,尽管要找到可靠的引用有点困难

如果选中,您将看到:

控件不会将对象保留在目标参数中。当目标对象附加到控件时,您有责任保持对目标对象的强引用

如果选中,您将看到:

控制对象不(也不应该)保留其目标。但是,发送操作消息的控件的客户端(通常是应用程序)负责确保其目标可用于接收操作消息