Вы можете создать один обозначенный инициализатор, который принимает все параметры, которые вы хотите сделать доступными при инициализации.
Затем вы вызываете с другого -(id)init
вашего назначенного инициализатора с правильными параметрами.
Только указанный инициализатор будет инициализировать суперкласс [super init]
.
Пример:
- (id)init
{
return [self initWithX:defaultX andY:defaultY];
}
- (id)initWithPosition:(NSPoint)position
{
return [self initWithX:position.x andY:position.y];
}
- (id)initWithX:(int)inPosX andY:(int)inPosY
{
self = [super init];
if(self) {
NSLog(@"_init: %@", self);
posX = inPosX;
posY = inPosY;
}
return self;
}
Назначенный инициализатор - -(id)initWithX:andY:
, и вы вызываете его из других инициализаторов.
Если вы хотите расширить этот класс, вы вызываете назначенный инициализатор из подкласса.