Почему в Objective-C мы используем self = [super init] вместо просто [super init]?

В книге я видел, что если подкласс переопределяет метод суперкласса, мы можем иметь

<code>self = [super init];
</code>

Во-первых, должно ли это быть сделано в подклассе?init метод?

Во-вторых, мне интересно, почему звонок не просто

<code>[super init];
</code>

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

(если назначить, не будет[super init] просто вернисьselfсуществующее значение?)

Ответы на вопрос(4)

Ваш ответ на вопрос