目标c:使用它来释放内存后我需要将局部变量设置为nil吗?

时间:2012-04-21 22:30:37

标签: objective-c variables memory allocation

我想知道,使用后局部变量是否需要设置为nil来释放变量?

3 个答案:

答案 0 :(得分:1)

没有。根据其保留计数释放内存。一旦它变为零,它将被释放,无论用于指向它的变量的值如何。将变量设置为nil是一种很好的做法,因此您不要尝试访问已释放的内存。

答案 1 :(得分:1)

没有

如果您使用ARC,当变量超出范围(您的方法返回或阻止关闭)时,将释放任何强变量。将变量设置为nil将无效。

如果您不使用ARC,请务必在您拥有的对象上致电releaseautorelease。完成后,您已删除对该对象的声明,并且可以取消分配。

答案 2 :(得分:1)

设置为nil的唯一时间是使用setFoo:方法或dot notaion设置属性时有效。如果您只是将实例变量设置为nil而不是使用点表示法或方法,则实际上会泄漏内存。记住这一点,你可以看到为什么,不,将局部变量设置为nil根本没有效果。

您应该查看https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html以更好地了解引用计数的工作原理。基本上,如果你在上面调用了alloc,你也必须释放它。