在这个例子中,vm和targetVC会被去初始化吗?它会导致内存泄漏吗?
loginModule.checkbox.checkboxAction = { [unowned self] in
let vm = HomeViewModel()
let targetVC = HomeViewController(viewModel: vm)
navigationController?.setViewControllers([targetVC], animated: true)
}
vm
和targetVC
都没有被捕获,因为它们是用闭包定义的。它们喜欢所有的本地变量。
-
vm
不会被初始化,因为新的HomeViewController
保持对它的引用(我假设它是一个强引用,因为它没有意义。 -
targetVC
可能不会被初始化,因为navigationController
将持有对它的引用。这里有一个奇怪的地方,navigationController
是可选的,所以这个集合只会在它不是nil的情况下发生。可选是很奇怪的,而且可能是不合适的。