1 はじめに
この記事は技術的な内容というよりは、実験系の内容になります。
ViewControllerを重ね合わせると、メモリに悪いというのは周知の事実ですが、視覚的に「いかにも悪そうだ〜」という記事は、私が探した限りでは見つけられなかったので掲載します。
2 試したこと
まず、最初に3つのViewControllerを用意します。
次にUIBUttonを用意して、下記のようなコードを書きます。
(UIButtonは省略します)
@objc func goSecondVC() {
//secondVCを実体化させる
let secondVC = SecondVC()
//用意したVCへ画面遷移
self.present(secondVC, animated: true, completion: nil)
}
@objc func goThirdVC() {
//thirdVCを実体化させる
let thirdVC = ThridVC()
//用意したVCへ画面遷移
self.present(thirdVC, animated: true, completion: nil)
}
@objc func goFirstVC() {
//firstVCを実体化させる
let firstVC = FirstVC()
//用意したVCへ画面遷移
self.present(firstVC, animated: true, completion: nil)
}
このコードでXcodeのシミュレターを立ち上げて、次々と画面遷移していきます。
これだけでも、
メモリをたくさん使っているように見えますね。
ここまでくると、明らかにメモリを使ってそうだというのがわかります。
ちなみに下記サイトがメモリに関してわかりやすく説明されていました。
https://wa3.i-3-i.info/word16066.html
3. メモリを圧迫しないためには
ViewControllerを消す必要があります。
例えば、thirdVCからfirstVCへ画面遷移するときに、このようなコードを書くことでViewControllerが破棄出来ます。
Swift 二つ前の画面に戻る方法を参考にさせていただきました。
@objc func dismissTwoVC() {
//2つ前のVCへ戻り、子VC(secondVC,thirdVCを削除)
self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) }
イメージはこのようになります。
(間違っていた場合は、ご教授いただけますと幸いです)
こうすることで視覚的にも「メモリに良さそう」な実装になります。