在重寫init方法時,總會self = [super init]
- (instancetype)init {
self = [super init];
if (self) {
//一些操作
}
return self;
}```
該方法中,最先運行的是 [super init],其作用是讓父類完成其自身的初始化工作,而通過調用父類的init方法最終可讓繼承了NSObject的類執行它所需的所有操作,以便對象能夠響應消息并處理保留計數器。
另外,在內存方面看,self是通過固定距離尋找實例變量所在的內存位置的。如果從init方法返回一個新對象,則需要更新self,以便氣候的實例變量的引用可以變映射到正確的內存位置。
最后,如果在初始化一個對象時出現問題了,[super init]會返回一個nil,因最終init方法就會返回一個nil,從而避免使用未初始化成功的對象