About
About Objective-C Dev Guide
 
インスタンス変数とメソッドの使い方

Hello Worldアプリケーションの作成で、だいたいのアプリケーション作成の流れについてつかむ事が出来たと思います。今回は、インスタンス変数とメソッドの使い方について更に詳しく解説します。

変数の宣言と値の格納方法
まずは変数の宣言方法です。何らかの値を格納するのに変数を使うのでしたね。数字を取り扱うint型の変数「object」を作成したい場合、
 
int object;
と記述する事で数字の格納する為の変数、objectが作成されます。
この変数に値を代入したい場合、
 
int object;
object = 5;
と記述すれば、objectに5の値が代入され、必要に応じてメソッド中で値を取り出したりする事ができます。ちなみに、この2つの操作を一行にまとめて記述する事も可能で、その場合は
 
int object = 5;
と記述します。

もう一つ例を出します。文字列を取り扱うNSString型のインスタンス「string」を生成し、さらに「Hello World」という文字列を代入したい場合は
 
NSString *string;
string = @”Hello World”;
と記述します。もちろんint型の時と同じように
 
NSString *string = @”Hello World”;
と記述しても構いません。Objective-Cで用意されている変数型に文字列を格納する場合、
 
@"代入したい文字列"
といったように記述し、アットマークの後ろにあるダブルクォーテーションの中に格納したい文字列を記述します。Objective-Cで用意されている変数型やクラス名はほとんどNSから始まる(例を出すとNSString、NSObjectなどなど)ので、NSから始まっている変数型に文字列を格納する場合はこの文法になると覚えておきましょう。

メソッドの実装と演算子
メソッドの宣言では、
 
-(返り値型)メソッド名:(引数型)引数名;
このように記述する必要がありました。例えば、渡した数字の自乗を行うメソッド、「value」というメソッドがあったとします。このvalueに計算を行ってもらう為には、自乗をさせたい数字をvalueメソッドに渡さなければなりません。この時に渡す数字がメソッドの引数になります。ここでは少し長くなりますが、引数のことを「message」としましょう。

そしてこのvalueメソッドは渡した数字をもとに計算を行います。この処理の結果として、引数の自乗の数字が答えとして返ってきます。これが返り値です。今まで話した文章をメソッドで表現すると
 
-(int)value:(int)message;
となります。今回はある特定の数字を引数として取得し、その引数をもとに計算した結果を数字として返すので、返り値型、引数型共にint型になります。

では、実際にこのメソッドの中身を実装したいと思った場合、どのように記述すれば良いのでしょうか?以下は実装ファイルにおけるvalueメソッドの実装例です。
 
-(int)value:(int)message
{
int number = message * message;
return number;
}
ここでは引数として受け取ったmessageをint型のnumber変数に格納しています。もちろん
 
int number = message;
だけではそのまま引数として渡した数字だけが返されてしまうので、
 
int number = message * message;
とすることで、message×messageの処理を行わせ、その計算結果をnumberに格納しました。注目すべきなのはかけ算を行うのに「×」と記述するのではなく、「*」を使用している点です。プログラミングのコード内では「×」を使用する事はできませんので、プログラム内でかけ算を行いたい場合はアスタリスクを使用します。このような計算に使用する記号のことを演算子と呼び、C言語ではかけ算以外にも足し算や引き算、割り算といった四則演算を行う為の演算子が用意されています。
 
足し算
 
-
引き算
 
*
掛け算
 
-
割り算
これらは、特に四則演算子と呼ばれ、その名のとおり四則計算を行うために用意されている演算子になります。

return文
 
return number;
この一文は、このメソッドが返す値としてnumber変数を指定しています。つまり、returnの後に記述した変数や値がメソッドの返り値になります。例えば、このnumberを単純に「5」とした場合、このメソッドが返す値は5です。Objective-Cでは、returnを使って返り値を設定する一連の文法を「return文」と言います。

このreturn文には2通りの使い方があります。今回は返り値を指定する為に使用しましたが、コードの文中にreturn文を記述するとそれ以降のコードは実行されません。途中でそのメソッドやコードの動作をやめさせるストッパー的な役割を果たします。
 
//returnの前のコード
return;
//returnの後のコード
一般的によく使うのは前者の方なので、後者の詳しい使い方については説明を省きます。return文には2通りの使い方があるということだけ覚えておきましょう。

メソッドの使用方法と暗黙のself文
コード中でメソッドを使用するためには、
 
[インスタンス名 メソッド名:引数];
と記述します。このメソッドの場合は返り値が返ってくるので、返り値を格納する為の変数を用意しておく必要があります。ここではvalueメソッドから返ってくる値を格納する為の変数として「obj」を用意します。これをソースコードで表すと、
 
int obj;
obj = [self value:5];
となります。valueメソッドでは返り値としてint型の数字が返ってくるので、格納する為の変数もその変数型に合わせなければなりません。

メソッドの呼び出し文に何やら見慣れない「self」という言葉が出てきました。selfというインスタンスは作っていませんよね。これは何でしょう??
メソッドを呼び出す場合、同じクラスの中にあるメソッドはインスタンス名で呼び出せません。つまり、同じ実装ファイルの中にあるメソッドは慣例通りに呼び出す事ができないのです。そのため、Objective-Cでは暗黙上のルールとして、自分自身を表すself文が用意されています。先ほどの例文では、インスタンス名の代わりにこのselfを代用することで、自分自身のクラスにある「value」メソッドを呼び出しています。このselfの事を暗黙のselfと呼ぶこともあります。

先ほどは直接5という数字を引数として渡しましたが、これを変数で代入することもできます。
 
int obj;
int five = 5;
obj = [self value:five];
プログラミングでは、決まった整数を代入する事は少ないので、このように変数を代入してメソッドを呼び出す事がほとんどだと思います。

以上がインスタンス変数とメソッドの詳しい使い方です。次回は以前作成したHello Worldアプリケーションを拡張し、掛け算を行う簡易的なアプリケーションを作成してみましょう。

無料でダウンロードできるApple社純正統合開発ツール(IDE)
 
inserted by FC2 system