使类为nil并释放引用

时间:2010-11-13 10:50:50

标签: objective-c objective-c++

在我的代码中,

ClassA *reference = [[ClassA alloc] init];
[reference invokeMethod];
reference = nil;
[reference release];

没有引用= nil我知道它会以正常的方式释放内存。但是在这种情况下,如果我们将引用设置为nil并稍后释放内存,它是否会删除用于创建对象的早期内存?

谢谢

2 个答案:

答案 0 :(得分:2)

没有。 release = nil只是让它原本指向的记忆无法进入;它不会消除消耗的内存。 (此外,这会导致[reference release];语句之后出现无操作。)

答案 1 :(得分:1)

正如肯尼所说,Release = nil只是使参考对象指向nil。现在你已经失去了对ClassA分配对象的控制,并且无法释放它以便发生内存泄漏。并且[reference release]试图释放一个nil对象的内存,因此也会导致崩溃。