在本书中,我看到,如果一个子类覆盖超类的方法,我们可以有为什么在Objective-C中,我们使用self = [super init]而不是[super init]?
self = [super init];
首先,这应该在子类中的方法init
要做些什么呢?
其次,我不知道为什么呼叫不仅仅是
[super init];
?我的意思是,在拨打init
时,内存已经被分配了alloc
(我认为是[Foobar alloc]
,其中Foobar
是子类的名字,所以我们不能只调用[super init]
来初始化成员变量吗?为什么我们必须得到返回值的init
并分配到self
?我的意思是,之前调用[super init]
,self
应指向一个有效的内存分配盘...那么,为什么再次分配的东西自我?
(如果分配,不会[super init]
只是返回self
的现有值?)
http://cocoawithlove.com/2009/04/what-does-it-mean-when-you-assign-super.html – 2012-04-13 11:24:46
@AndreasCarlbom辉煌的教程,谢谢... – Krishnabhadra 2012-04-13 11:33:34
可能重复的[为什么我应该打电话self = \ [super init \]](http://stackoverflow.com/questions/2956943/why-should-i-call-self-super-init) – 2012-04-13 17:53:28