2010年11月24日水曜日

initのオーバーライド

TestView*view=[[TestView alloc]init];
TestViewController *VC = 
[[TestViewController alloc] initWithNibName:
 @"TestViewController" bundle:[NSBundle mainBundle]];
UIView、xib付きUIViewControllerの初期化時にオーバライド(ロード)する場合は
以下をそれぞれのサブクラスに書く。※クラスにオーバロードのメソッド宣言すれば引数を渡す初期化も可能

*UIView
- (id)init {
 self = [super init];
 if (self != nil) {
   NSLog(@"ここに初期化したい処理を追加する");
 }
 return self;
}

*xib付きUIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil 
      bundle:(NSBundle *)nibBundleOrNil
{
    if (self = [super initWithNibName:@"TestViewController" bundle:nibBundleOrNil]) {
       NSLog(@"ここに初期化したい処理を追加する");
    }
    return self;
}
*Frame付き
- (id)initWithFrame:(CGRect)frame{
 if ((self = [super initWithFrame:frame])) {
  NSLog(@"ここに初期化したい処理を追加する");
 }
 return self;
}