objective-c以dealloc方法释放未初始化的类成员

Dud*_*ude 2 iphone cocoa-touch objective-c

关于过度释放.假设我在Test.h中定义了一个实例变量

NSString *mystring;
Run Code Online (Sandbox Code Playgroud)

在我的实现Test.m中,我没有在任何地方初始化变量mystring.但我在dealloc中发布它:

-(void)dealloc {
    [mystring release];
}
Run Code Online (Sandbox Code Playgroud)

现在这个过度发布了吗?我一直在dealloc做以下事情,以避免任何问题,但是,这真的有必要吗?

-(void)dealloc {
     if (mystring) [mystring release];
}
Run Code Online (Sandbox Code Playgroud)

似乎[nil release]不应该做任何事情,有人可以与班级成员核实这一点吗?

bbu*_*bum 5

没有办法过度释放一开始就不存在的东西.

实例变量初始化为nil,因此[mystring release]是消息nil,这在Objective-C中很好.

但是-dealloc方法确实需要[super dealloc]在最后调用.