1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Swift] 何気なく書いているviewDidLoad()について理解が深まったこと

Last updated at Posted at 2022-05-15

概要

実務のペアプロの際に教えていただいた、viewのライフサイクルについて自分が理解できてなかったことについて、viewDidLoadに焦点を当てて記載しておきます

viewDidLoad()内の構造について

ViewControllerにコードを書く際に何気なく書いているviewDidLoad()は、

override func viewDidLoad() {
    super.viewDidLoad()
    //ここにやりたい処理を書く
}

という形をしています
まず、

override func viewDidLoad()

の部分についてですが、overrideをつけて宣言することで、親クラスが持っているメソッドにアクセスを行なっています。
次に、

super.viewDidLoad()

ここで書かれているsuperとは、スーパークラス(親クラス)のことです
ということは、この部分は結局何をしているのかというと、
親クラスの中のviewDidLoad()を呼び出しているという意味になります
全体をまとめると、
overrideで親クラスのメソッドにアクセスしてから、
superでアクセスした親クラスのメソッドの呼び出しを行っています

SOLID原則との関連性

さらに、このコードにはSOLID原則の中のリスコフの原則の考え方も適用されています
リスコフの原則とは、子クラスが親クラスの機能を引き継いで実現することができるというものです
継承とは、親クラスを基につくる。親クラスのプロパティやメソッドを引き継ぐと言った意味です
リスコフの置換原則を守るには、継承関係にあるクラスは振る舞いが変わらないようにする必要があります
親クラスが本来持っている振る舞いを変更してはいけないので、親クラスのメソッドであるviewDidload()にアクセスし、呼び出しを行なって、それに対して肉付けを行なっていると言ったイメージです
そうすることで、親クラス自体のメソッドを変更ぜずに、やりたい処理の実行を同じタイミングで実行できるようにしています。

補足

viewDidLoad()メソッドをはじめとするviewのライフサイクルメソッドは、
UIViewControllerを継承させている時点で持っていることになるので、特に同じタイミングでやりたいメソッドがない場合は書かなくても良いです

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?