[self init]和self = [super init]之间的区别

时间:2012-12-10 17:22:49

标签: objective-c ios

我想知道之间有什么不同 init family方法中的[ self init ]self = [ super init ] 如果我不重写“init”方法。

为什么人们通常在init系列方法中使用self = [ super init ]

2 个答案:

答案 0 :(得分:4)

[ self init ]表示您正在初始化自我类。

self = [ super init ]表示初始化超类,返回的地址/内存位置设置为自我类。

答案 1 :(得分:0)

人们将self = [ super init ]用于NSObject之前的所有父类,因此这非常重要

通常人们使用if (self = [ super init ]) {... return self;}以防万一self == nil,但我从未有过这样的事情

[self init]不对,因为你只是忽略父类的初始化,这可能是导致错误的原因