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];
}