I have 4 scenes in my project, and page1
can segue(type is show
) to page2
, then can segue to page3
, then to page4
, then back to page1
.
You understand that in 1 second from my storyboard:
The class of controller of these four scene is ViewController
:
import UIKit
class ViewController: UIViewController {
static var count: Int = 1
var id = count
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
ViewController.count += 1
print("ViewController#\(id) inited.")
}
deinit {
print("ViewController#\(id) deinited.")
}
override func viewDidLoad() {
super.viewDidLoad()
print("ViewController#\(id) loaded.")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("ViewController#\(id) appeared.")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("ViewController#\(id) disappeared.")
}
}
Then after I finished the segue circle(page1 > page2 > page3 > page4 > page1), it outputs:
ViewController#1 inited.
ViewController#1 loaded.
ViewController#1 appeared.
ViewController#2 inited.
ViewController#2 loaded.
ViewController#2 appeared.
ViewController#1 disappeared.
ViewController#3 inited.
ViewController#3 loaded.
ViewController#3 appeared.
ViewController#2 disappeared.
ViewController#4 inited.
ViewController#4 loaded.
ViewController#4 appeared.
ViewController#3 disappeared.
ViewController#5 inited.
ViewController#5 loaded.
ViewController#5 appeared.
ViewController#4 disappeared.
That's not what I wanted. I think there are 5 ViewController
s in my heap(because no deinit called). Indeed, we just need 1 ViewController
which is to control page1
. What should I do to destroy 4 useless ViewController in the heap of my App?