クラスのオプショナル型の扱いについて【iOSアプリ設計パターン入門 】
はじめに
ページを開いていただきありがとうございます。この質問はiOSアプリ設計パターン入門が手元にある前提で質問しております。
現在置かれている状態
- いくつかアプリを作ったが、Swift言語そのもの、特にメモリの扱いについての理解が浅い。
- オプショナル型やクラス、インスタンスなどについてはわかる。
- アーキテクチャの勉強をしている。
わからないこと
iOSアプリ設計パターン入門 第5章MVC のp.90,91 のサンプルアプリを実際に制作しています。Cocoa MVCのUIViewControllerクラス のファイルにおいて、
var myModel: Model? {
didSet {
//ViewとModelを結合し、Modelの監視を開始する
registerModel()
}
}
//省略
@objc func onMinusTapped() { myModel?.countDown() }
とかかれています。
このコードにおいていくつかわからないことがあります。
-
myModel
はなぜModel?
型なのか。Model
型ではなぜいけないのか。 - 全てのファイルを通して、
myModel
の値が変わっている処理が見当たらず、didSet
が呼ばれるタイミングがわからない。 -
registerModel()
をviewDidLoad()
などの中に入れないのはなぜか。
簡略化のため箇条書きで書かせていただきました。回答よろしくお願いいたします。🙇♂️