init メソッドをオーバーライドする演習があったので、init
いくつかの属性も設定するメソッドを作成する必要があります。
init
私の質問は、元のメソッドも定義する必要があるのはなぜですか? 新しいinit
方法がうまくいかない場合は?
これは私の.h
ファイルです:
#import <Foundation/Foundation.h>
#import "XYPoint.h"
@interface Rectangle: NSObject
@property float width, height, tx, ty;
-(XYPoint *) origin;
-(void) setOrigin: (XYPoint *) pt;
-(void) translate: (XYPoint *) point;
-(id) initWithWidth:(int) w andHeight:(int) h;
-(id) init;
@end
そして.m
(init メソッドのみ):
-(id) initWithWidth:(int)w andHeight:(int)h
{
self = [super init];
if (self)
{
[self setWidth:w andHeight:h];
}
return self;
}
-(id) init
{
return [self initWithWidth:0 andHeight:0];
}
この方法が良いことはわかっていますが、誰かが私にその理由を説明できれば幸いです。