どんどん行きましょう。Objective-C入門、第5回目です。
前回のクラスに続き、今回も宣言のお話です。
Objective-C入門その4:クラス宣言をマスターする
今回のターゲットは、インスタンス変数です。
まずはいつものようにHelloWorldAppDelegate.hを見てみましょう。
はい、どん!
インスタンス変数はクラス名の後ろの{ から }の間に書かれています。
IBOutlet UIWindow *window;
MyViewController *myViewController;
この2個です。
でもこの2個のお話をする前に。
まずはちょいとインスタンス変数自体の話をしましょう。
変数って言葉、プログラムの本を読むと必ず出てくると思います。
変数の変って、何でしょう?
・変人
・変態
・変身
・変化
ロクなイメージが出てきませんが、変化が正解です。
じゃぁ何が変化するんでしょう?
中身が変化します。
ここまでは良いですか?
変数の数は、数字の数です。
ですが、これは数字じゃなくても構いません。
文字でも画像でも、変数として処理できるものならなんでも変数と呼びます。
前提はこんな感じ。変化する値ことを変数と呼ぶわけです。
さて、じゃぁ変数は何のためにあるものなんでしょう?
今ここにマナブ君がいます。
マナブ君は暗算が苦手です。
計算する時は常に両手を使って計算します。
1+3+5-4=?
右手の指を1本折って、次に3本折って、次は足りないので左手の指も折って、戻して。
5ほーん!
これが一番シンプルな変数、その名も「指」です。
マナブ君にとっては長~い計算ですので、指に覚えてもらっているわけです。
これをプログラム的に書くとこうなります。
int 指; // int型の変数「指」を宣言
指 = 0; // 指をゼロで初期化
指 += 1; // 指に1を加える
指 += 3; // 指に3を加える
指 += 5; // 指に5を加える
指 -= 4; // 指から4を引く
printf(“%dほーん!”, 指); // 指の値を出力
マナブ君は指しか使えませんが、
コンピューターは余力がある限り沢山の変数を処理することができます。
値を覚えておいてもらって、
中身を入れ替えていくことで、
最終的な結果を得る。
これが変数の役割です。
インスタンスについては、オブジェクト指向のお話を思い出しましょう。
Objective-C入門番外編:オブジェクト指向って何だろう?
ボールの設計図(クラス)から作られた1個1個のボールのことでしたね。
つまり、インスタンス変数は、
「1個1個のボール」が持つ「指」ということです。
上のFlashを「1年2組」だと考えるとピンと来ますね。
全員が指を折って考えているわけです。
では戻りましょう!
はい、どん!
IBOutlet UIWindow *window;
MyViewController *myViewController;
この2個は、設計図(クラス)に書かれた、インスタンス変数です。
ですので、インスタンス(ボール)になったときに使われます。
まず1個目
IBOutlet UIWindow *window;
3つのパーツに分かれてますね。
最初はIBOutlet
コレは以前書いた、アウトレットとアクションの使い方の中で出てきました。
開発基礎トレ2:アウトレットとアクションの使い方
「アウトレットですよ~」という宣言です。
次はUIWindow
これは「型」を指定しています。
型?
さきほどこんなことを書きましたね。
文字でも画像でも、変数として処理できるものならなんでも変数と呼びます。
「処理できるものなら」
この判断は「型」が存在するかどうかで決まります。
・整数型
・実数型
・文字列型
・クラスオブジェクト型
などなど、何を覚えておいて欲しいかによって決めるのが「型」です。
ここでは、UIWindowという、クラスオブジェクト型を指定しています。
コレはiPhoneのWindowのことですので、
このプログラムではWindowを何かに使うつもりなんでしょう。
最後は*window
これは「インスタンス変数の名前」です。
ここだけはわかりやすいですね。
って思ったら。
なんか付いてる。
「*」アスタリスク。
ややこしい公式行きますよ~。
Objective-Cでインスタンス変数を宣言する時に、
型がクラスオブジェクト型の場合は、
変数名の頭にアスタリスクを付ける。
理由はちゃんとあるんですけど、
ここは公式化した方が速いのでコレで覚えちゃいましょう。
理由は別の回で書きます。
まとめると、
「【windowクラス】の【*window】という変数を宣言して【アウトレット】として使います~」
がこの1文です。
そして2個目
MyViewController *myViewController;
さくっと読んじゃいましょうか。
「【MyViewControllerクラス】の【*myViewController】という変数を宣言します~」
読めましたね。
アウトレットとしては使わないようです。
MyViewControllerクラスはこのHelloWorldAppDelegateクラスのお隣で宣言されているクラスです。
このあと見ることになりますので、今回は宣言までとしましょう。
それでは、今回はここまで。
読める部分がどんどん広がっていますね。
宣言シリーズ、まだまだ続きます。