Tip
在init和dealloc方法執行的過程中,子類可能會處在一個不一致的狀態,所以這些方法中的代碼應避免調用訪問器。
子類尚未初始化,或在init和dealloc方法執行時已經被銷毀,會使訪問器方法很可能不可靠。實際上,應在這些方法中直接對 ivals 進行賦值或釋放操作。
正確:
-(id)init{
self=[superinit];
if(self){
bar_=[[NSMutableStringalloc]init];// good}
returnself;
}
-(void)dealloc{[bar_release];// good
[superdealloc];
}
錯誤:
-(id)init{
self=[superinit];
if(self){
self.bar=[NSMutableStringstring];// avoid
}
returnself;
}
-(void)dealloc{
self.bar=nil;// avoid
[superdealloc];
}