我有一个重写 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];
}
我知道这样很好,但是如果有人可以解释我为什么会这样,我将不胜感激。