Objective-C入門その5:インスタンス変数宣言をマスターする

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > Objective-C入門その5:インスタンス変数宣言をマスターする

2009/09/02 09:00 投稿先 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) 投稿者 カワサキ タカシ

んどん行きましょう。Objective-C入門、第5回目です。

前回のクラスに続き、今回も宣言のお話です。
Objective-C入門その4:クラス宣言をマスターする

今回のターゲットは、インスタンス変数です。

まずはいつものようにHelloWorldAppDelegate.hを見てみましょう。

はい、どん!

Objective-C入門その5:インスタンス変数宣言をマスターする
<クリックで拡大>

インスタンス変数はクラス名の後ろの{ から }の間に書かれています。

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入門番外編:オブジェクト指向って何だろう?

サルにもできるiPhoneアプリの作り方-オブジェクト指向3
<Flashで見る>

ボールの設計図(クラス)から作られた1個1個のボールのことでしたね。

つまり、インスタンス変数は、
「1個1個のボール」が持つ「指」ということです。

上のFlashを「1年2組」だと考えるとピンと来ますね。

全員が指を折って考えているわけです。

では戻りましょう!

はい、どん!

Objective-C入門その5:インスタンス変数宣言をマスターする
<クリックで拡大>

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クラスのお隣で宣言されているクラスです。
このあと見ることになりますので、今回は宣言までとしましょう。

それでは、今回はここまで。

読める部分がどんどん広がっていますね。

宣言シリーズ、まだまだ続きます。

関連する記事:


Advertisement