[英]Does closure create a strong reference to an object that is created inside closure scope?
在這個例子中,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 時才會發生。 它是可選的很奇怪,而且可能不合適。 應該早點解開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.