В книге я увидел, что если подкласс переопределяет метод суперкласса, мы можем иметь
self = [super init];
Во-первых, предполагается ли это в методе подкласса init
?
Во-вторых, мне интересно, почему вызов не просто
[super init];
? Я имею в виду, что во время вызова init
память выделяется alloc
уже (я думаю, [Foobar alloc]
, где Foobar
- это имя подкласса. Поэтому мы не можем просто вызвать [super init]
для инициализации переменные-члены? Почему мы должны получить возвращаемое значение init
и присваивать self
? Я имею в виду, что перед вызовом [super init]
, self
должен указывать на допустимый патч памяти... так зачем присваивать что-то для себя снова?
(если назначить, не будет [super init]
просто вернуть self
существующее значение?)