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