У меня возникли проблемы с пониманием назначенных инициализаторов.Я изучаю Цель C из книги «Изучите Цель C на Mac».Ниже приведен файл реализации.
#import "Tire.h"
@implementation Tire
- (id) init
{
if (self = [self initWithPressure: 34 treadDepth: 20]) {
}
return (self);
} // init
- (id) initWithPressure: (float) p
{
if (self = [self initWithPressure: p treadDepth: 20.0]) {
}
return (self);
} // initWithPressure
- (id) initWithTreadDepth: (float) td
{
if (self = [self initWithPressure: 34.0 treadDepth: td]) {
}
return (self);
} // initWithTreadDepth
- (id) initWithPressure: (float) p treadDepth: (float) td
{
if (self = [super init]) {
pressure = p;
treadDepth = td;
}
return (self);
} // initWithPressure:treadDepth:
Из того, что я понимаю:
- (id) initWithPressure: (float) p treadDepth: (float) td
является инициализатором по умолчанию.Когда экземпляр класса Tire должен быть инициализирован с помощью оператора, подобного
Tire *aTire = [[Tire alloc] init];
, то вышеупомянутый метод инициализации будет выполнен.Однако, поскольку метод содержит «давление = р», то, что равно давлению, так как до этой стадии мы не дали «р» никакого значения.Кроме того, что происходит после завершения выполнения этого метода?Какой следующий метод "init" в очереди?