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

クラスを更に考える (8/8)

作成:2011-02-09 09:21
更新:2011-11-13 16:34

■プロパティを使ってみよう

では、下のリストにプロパティの利用例をあげておきましょう。先程、@publicを使ってインスタンス変数を使えるようにしましたが、これをプロパティ利用の形に書き換えてみます。

インスタンス変数にアクセスするメソッドもなくすっきりした形ですが、mainでの処理を見てみると、メソッドを呼び出しているのがわかります。
MyTestClass* obj = [MyTestClass myTestClass];
[obj setMyMsg:@"This is First Object!!"];
生成されるメソッド名は、以下のような形になることがわかります。

値を取得する――プロパティ名と同じ名前のメソッド
値を変更する――プロパティ名の前に「set」とつけたメソッド

myMsgインスタンス変数なら、「myMsg」「setMyMsg」というメソッドになるわけです。

メソッド名が気に入らなければ、setter,getter属性で名前を指定しておくこともできます。例えば、以下のような形です。
@property (retain,getter=getMyMessage,setter=setMyMessage:)
        NSString* myMsg;
メソッド名を指定するとき、注意したいのは値を変更するメソッドです。これは必ず引数が用意されますから、メソッド名の最後に「:」を忘れないようにしましょう。

――さあ、これでだいぶインスタンス変数の利用もスマートに行えるようになりました。
(by. SYODA-Tuyano.)

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

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

●プログラム・リスト●

※MyTestClassのヘッダー部分

@interface MyTestClass : NSObject {
	NSString* myMsg;
}

@property (retain)NSString* myMsg;

+(MyTestClass*)myTestClass;
-(void)printMessage;

@end


※MyTestClassの実装部分

@implementation MyTestClass

@synthesize myMsg;

+(MyTestClass*)myTestClass {
	MyTestClass* obj;
    @autoreleasepool {
        obj = [[self alloc] init];
    }
	return obj;
}

-(void)printMessage {
	NSLog(@"%@",myMsg);
}

@end


※利用するmain関数の例

int main (int argc, const char * argv[]) {
	MyTestClass* obj = [MyTestClass myTestClass];
	[obj setMyMsg:@"This is First Object!!"];
	[obj printMessage];
	
    return 0;
}
※関連コンテンツ

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