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]不应该做任何事情,有人可以与班级成员核实这一点吗?
没有办法过度释放一开始就不存在的东西.
实例变量初始化为nil,因此[mystring release]是消息nil,这在Objective-C中很好.
但是-dealloc方法确实需要[super dealloc]在最后调用.
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |