Почему в 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
существующее значение?)