クラス定義では共有できるものとできないものを知ることにある

iPhoneアプリを作成する上で、覚えておくべき概念としてクラスがあります。

クラスはいろいろな形で説明される書籍がありますが、わかりやすそうで、掴みにくい説明のものが多く見受けられます。

よくある説明としては世の中に動物クラスがあって、人間と猫は動物クラスに属します。一方、人間クラスには猫は属しませんなどという説明です。これは言われなくともわかるとツッコミを入れたいところですね。

ご丁寧に、人間と猫のイラストなんかも入れて図式で2-3ページにわたり説明していたりもするところもあったのですが、結局わかりやすそうで迷宮入りしてしまいました。

そこで、自分なりのわかりやすい解釈としてここで説明させていただきます。

そもそもなぜクラスたるものを作る必要があるのかということです。

「それは変数や関数を共有するためにある」と私は解釈しております。

この共有というポイントを抜きに説明すると単なる動物分類の話になってしまうでしょう。
(分類してどうすんだというところが大事ですね。)

変数や関数の共有という言い方はまだ少し難しいかもしれませんね。
ではこういう言い方はどうでしょう。

「変数や関数を再度記述するのが面倒くさいので使いまわすためにある!」
(面倒くさいメソッドの大半は既にAppleが作ってXcodeに用意してくれております。)

有料の書籍でこんな言いまわしをしたら苦情となるかもしれませんが、ここは無料のブログのためご勘弁を!(有料の情報はお化粧をし過ぎるのでかえってわからなくなることも多いのですよね。)

ただ、実際一般デベロッパーとしてiPhoneアプリを開発する側にとってはクラスを自力で作って、変数や関数を共有する(セグエなどで変数を渡すなどはあるかもしれませんが)という作業を行うことはあまりないかと思います。

ただ、共有という概念で注意する必要があるのは基本的にクラスには親子関係があって、親にあるもののみ子と共有できるということです。これは言い換えると親子関係にないクラスで行き来すると変数などは初期化されてしまうということです。

ちなみに私はこれを知らず、var x = 2などと変数を定義したら、もう2度と別のクラスでも”x”という変数は使えないなどと信じていました。このため、アプリ内に大量のプロパティ定義を作ってしまいました。このクラス概念を知っていれば新しいクラスを作った時にも安心して、別のクラスからスクリプトの一部をコピー&ペーストできるようになりますね。これを知っていると知らないで作業効率がだいぶ変わります。

ちなみにiPhoneユーザーにとって身近なクラスと言えばどこでしょうか?

iPhoneのアプリなどでどこかボタンなどをタップすると全く別の画面が現れたりするものがありますよね。ああいうのはだいたい1画面につき1クラス(viewController)が設定されております。アプリ内の画面が切り替えは基本的に親子関係にない子クラス同士での移動のため、初期化が起こります。動きが鈍かったものが急に早くなったりもしますね。

この記事へのコメント