はじめに
私は未経験からiOSをメインにエンジニアをしていました。
2年を過ぎて、基礎をまるで理解できていなかったことに気がつき改めて勉強しました。
この記事は自分用のメモとして書いていますが、どなたかの助けができたら幸いです。
概要
今回はクラスとインスタンスについて書きます。
クラスって何?
クラス = テンプレート
クラスとは、必ず使うであろう基礎機能をまとめてテンプレートにすることです。
Appleが作ったUIButtonクラスやUIViewControllerなどもクラスになります。
これらのクラスは、プログラマーがボタンなどのUIパーツを毎回1から作らなくてもいいように、ある程度の基礎機能をまとめてくれています。
また、クラスは自分たちで独自のクラスを作ることもできます。
独自で作ったクラスもまた、テンプレートとして自分のアプリ内で使用することが可能になります。
インスタンスって何?
インスタンス = 実体
インスタンスとは、クラスを元に生成される実体のことです。
UI部品のボタンで例えると、クラスはボタンがどういった見た目でどういった機能を持つかが書かれたもので、インスタンスはユーザが実際に触るボタンのことです。
つまり、クラスは必ずインスタンス化をしないと意味がないものです。
クラスとインスタンスの関係って??
クラスを使いたかったらインスタンス化しろ
ってことです。
「え?じゃあXcodeに最初からあるViewControllerとかってインスタンス化してなくない??」
いい質問です。(私も同じことを思いました)
ViewControllerのインスタンス化、つまり画面の生成は、Swiftで書かれたクラス(ソースコード)を元にiOSが生成しています。
しかし、これは画面生成だけではありません。
私たちが書いた全てのクラスは、iOSによって全てインスタンス化(実体化)されています。
つまり、
プログラマ → クラス(ソースコード) → iOS → インスタンス(アプリ) → ユーザ
という仕組みです。
プログラミングから少し離れてレストランで考えてみましょう。
オーナー → レシピ → 従業員 → 料理完成 → お客さん
という感じです。イメージ湧きましたでしょうか。
最後に
いかがでしたでしょうか?
クラスとインスタンスの関係を知った上で、ぜひ自分が作ったアプリのソースコードを見ながら考えてみてください。
より理解が深まると思います。
最後まで読んでいただきありがとうございました。