viewController 中的 ARC 变量

variable in viewController for ARC

我的应用程序是基于 UINavigationViewController 构建的,而我的应用程序将在当前 UIViewController 之上继续到其他 UIViewControllerprepare(for:sender) 的方法将在转到下一个 UIViewController.

之前被调用

我想知道什么时候实现覆盖 prepare(for:sender),例如:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toNextVC", let vc = segue.destination as? NextViewController {
        vc.session = self.session // session is class.
    } 
}

所以,在NextViewController中,如果session是class的变量,那么,如果我需要在[中为session标记unowned =18=]?

因为 nextViewController 可能会被删除并返回以前的视图控制器。

NextViewController 可以拥有 session 变量(从而增加其 ARC)。当你弹出控制器(你从它返回)时,它将被释放并且它对 session 的引用将被自动删除,从而减少它的 ARC 返回。

如果 session 变量将获得对 NextViewController 的引用,则可能会出现潜在问题,从而创建一个保留循环。那么 NextViewController 将不会被释放(因为它的 ARC > 0),这将防止减少 session 的 ARC。您必须使用 unownedweak.

来打破这样的循环