2013年2月2日土曜日

Objective-Cでコンストラクター?(init)

JAVA感覚でコンストラクター相当な処理を買いてみました。

Objectの生成時に自動的に呼ばれるメソッドを作成いたしました。


/**
 * イニシャライズな処理(コンストラクタ相当)
 */
- (id)init
{
    if(self == [super init]) {
        // 初期化処理をここに記述
    }
    return self;
}


initクラスを作成すると、生成時に呼ばれます。


■サンプルソース
新規ファイルでTestClassを作成

hファイル

#import <Foundation/Foundation.h>

@interface TestClass : NSObject{
}

@property(weak,nonatomic)NSString* sText;

-(id)init;
-(void)test;
@end


mファイル

#import "TestClass.h"

@implementation TestClass

/**
 * 初期化処理(コンストラクタ相当)
 */
- (id)init
{
    if(self == [super init]) {
        // 初期化が成功したので初期化処理を行う
        _sText = @"コンストラクター";
    }
    return self;
}

-(void)test{
    _sText = @"普通のクラス";
}

@end

ViewController

mファイル

- (void)viewDidLoad
{
    id obj = [[TestClass alloc] init];
    
    NSLog(@"%@", [obj sText]);
    [obj test];

    NSLog(@"%@", [obj sText]);
    
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}





Logに注目すると、
初期のログの文字列が変更された事が
わかると思います。



0 件のコメント:

コメントを投稿