viewController 中的 ARC 变量
variable in viewController for ARC
我的应用程序是基于 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
是class的变量,那么,如果我需要在[中为session
标记unowned
=18=]?
因为 nextViewController
可能会被删除并返回以前的视图控制器。
NextViewController
可以拥有 session
变量(从而增加其 ARC)。当你弹出控制器(你从它返回)时,它将被释放并且它对 session
的引用将被自动删除,从而减少它的 ARC 返回。
如果 session
变量将获得对 NextViewController
的引用,则可能会出现潜在问题,从而创建一个保留循环。那么 NextViewController
将不会被释放(因为它的 ARC > 0),这将防止减少 session
的 ARC。您必须使用 unowned
或 weak
.
来打破这样的循环
我的应用程序是基于 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
是class的变量,那么,如果我需要在[中为session
标记unowned
=18=]?
因为 nextViewController
可能会被删除并返回以前的视图控制器。
NextViewController
可以拥有 session
变量(从而增加其 ARC)。当你弹出控制器(你从它返回)时,它将被释放并且它对 session
的引用将被自动删除,从而减少它的 ARC 返回。
如果 session
变量将获得对 NextViewController
的引用,则可能会出现潜在问题,从而创建一个保留循环。那么 NextViewController
将不会被释放(因为它的 ARC > 0),这将防止减少 session
的 ARC。您必须使用 unowned
或 weak
.