ARC的viewController中的变量

时间:2017-09-08 11:40:33

标签: ios swift automatic-ref-counting

我的应用程序构建于UINavigationViewController,当我的应用程序将转移到当前UIViewController之上的其他UIViewController时。在调到下一个prepare(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是类的变量,那么,如果我需要在unowned中为session标记NextViewController?< / p>

可以删除nextViewController并返回前一个视图控制器。

1 个答案:

答案 0 :(得分:0)

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

如果session变量将获得对NextViewController的引用,则可能会出现潜在问题,从而创建保留周期。然后NextViewController不会被解除分配(因为它的ARC> 0),这将阻止session的ARC减少。您必须使用unownedweak

来中断这样的循环