libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

クラスを作る! (5/7)

作成:2011-02-07 11:06
更新:2011-11-13 17:19

■MyTestClassを使ってみよう

では、作成したMyTestClassを使ってみましょう。下のリスト欄に簡単な利用例をあげておきます。MyObjCApp.mのソースコードをこのように修正して実行してみてください。コンソールに「This is First Object!!」とメッセージが出力されます。

(なお、ここではXcode 4.2のARCを利用したコードになっています。それ以前のものまたはARCをOFFでにしている場合は、ソースコード内のコメント部分の//を消して、実行するようにして使ってください。)

ここでは、MyTestClassを利用するのに、「#import "MyTestClass.h"」という文が追加されています。これで、MyTestClass.hに書いたクラスが利用出来るようになります。そしてmain関数では、MyTestClassの「インスタンス」を作成し、そこにメッセージを設定してから出力をさせています。

インスタンスという名前は何度か登場しましたが、これは「クラスを実際に利用出来るようにメモリ内にコピーして作った値」のことです。構造体などは、定義した後に、変数に構造体の値を設定して利用しましたね。クラスも同じです。クラスの定義をした後、クラスをメモリ内の何処かにコピーして「クラスの値」となるものを作り、これを変数に設定して利用します。この「クラスの値」が「インスタンス」なのです。

インスタンスの作成は、クラスに用意されているメソッドを呼び出して行います。これには、ちょっとばかり手間がかかります。ソースコードを見てください。
MyTestClass* obj = [MyTestClass alloc];
obj = [obj init];
これが、MyTestClassのインスタンスを作っている部分です。ここでは3つのメソッドを呼び出しています。それぞれ以下のようなものです。

alloc――クラスをメモリの何処かにコピーしてインスタンスを作ります。
init――インスタンスの初期化を行います。
autorelease――オートリリースプールにインスタンスを登録します。ARCを使わない場合、必要です)

インスタンス作成は、このように「allocでインスタンスを作成」「initで初期化」(ARCなしなら、その後で「autoreleaseでオートリリースプールに登録」)というのをセットで行う必要があります。

これらは、1つずつ文を書いてやるのが面倒なら、まとめて書くこともできます。こんな具合です。
MyTestClass* obj = [[MyTestClass alloc] init] ;
このようが、見た目はややこしいですが、コードはすっきりと記述できます。割とこちらの書き方をするのが多いので、この書き方も覚えておくと便利でしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※main.mのソースコード

#import <Foundation/Foundation.h>
#import "MyTestClass.h"

int main (int argc, const char * argv[]) {
	// NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
	
	MyTestClass* obj = [MyTestClass alloc];
	obj = [obj init];
	// obj = [obj autorelease];
	[obj setMessage:@"This is First Object!!"];
	[obj printMessage];
    
	// [pool drain];
	return 0;
}


※MyObjCApp.mの修正版(ARC利用)

#import <Foundation/Foundation.h>
#import "MyTestClass.h"

int main (int argc, const char * argv[]) {
	MyTestClass* obj = [[MyTestClass alloc] init];
	[obj setMessage:@"This is First Object!!"];
	[obj printMessage];
	
	return 0;
}

※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る