在我的代码中,
ClassA *reference = [[ClassA alloc] init];
[reference invokeMethod];
reference = nil;
[reference release];
没有引用= nil我知道它会以正常的方式释放内存。但是在这种情况下,如果我们将引用设置为nil并稍后释放内存,它是否会删除用于创建对象的早期内存?
谢谢
答案 0 :(得分:2)
没有。 release = nil
只是让它原本指向的记忆无法进入;它不会消除消耗的内存。 (此外,这会导致[reference release];
语句之后出现无操作。)
答案 1 :(得分:1)
正如肯尼所说,Release = nil只是使参考对象指向nil。现在你已经失去了对ClassA分配对象的控制,并且无法释放它以便发生内存泄漏。并且[reference release]试图释放一个nil对象的内存,因此也会导致崩溃。