我需要知道如何从视图控制器中的(释放/释放)内存在标签栏控制器项目中,deinit方法不会调用这两个视图控制器。我使用仪器工具是告诉我它是在内存中并不会释放它如何从视图控制器在内存中释放内存
以下是我的两个视图控制器 在挖掘应用程序的第一个视图控制器代码:
import UIKit
class WebViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
deinit {
print("web view controller is De init")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.dismiss(animated: true, completion: nil)
}
}
和在挖掘应用程序中的同一个项目第二视图控制器是:
import UIKit
class MovieDownloadingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.dismiss(animated: true, completion: nil)
}
deinit {
print("Movie Downloading View Controller is De init")
}
}
你可以尝试的代码,看到了DEINIT方法不叫
请问什么时候是强引用,错误的代码会泄漏内存,所以无法从这些视图控制器释放内存?
不,所有这些都是创建视图控制器的另一个实例,并且您看到它的'deinit'被调用。但原始视图控制器实例仍在内存中激荡。 – Rob