自动释放并分配给 nil

Posted

技术标签:

【中文标题】自动释放并分配给 nil【英文标题】:Autorelease and assigning to nil 【发布时间】:2014-07-04 05:34:37 【问题描述】:

当我们将 nil 分配给自动释放的对象时,内存管理的行为如何?它是立即释放还是使用自动释放池释放?

等,

NSString *myString = [NSString stringWithFormat@"%@","MY_STRING"]; //Autorelease object

myString = nil;//What will happen here ? Does it get deallocated ? Or Will it get deallocated with the autolrelease pool ?  

【问题讨论】:

您使用的是 ARC 还是 MRC? 如果你能给出两种环境的解释,那就太好了...... 【参考方案1】:

每当使用nil 分配任何局部变量时,该变量都会将其指向内存更改为0x0000000。这样,之前地址处显示的值将变得不明确。

并且,Autoreleasepool的作用是释放当前正在运行的程序或项目或特定环境的未引用地址。所以,之前被指向的值被Autoreleasepool释放了。

【讨论】:

以上是关于自动释放并分配给 nil的主要内容,如果未能解决你的问题,请参考以下文章

我应该在重新分配之前调用分配给保留属性的自动释放对象的释放吗?

重新分配给包含自动释放对象的指针是不是不正确?

将自动释放的对象分配给保留的属性

当对象在运行时释放时,确保nil或null值

如何使用在设计时获取“无法将 NIL 分配给 TFont”的 TFont 属性修复 Delphi 组件?

分配和释放 VS。自动释放。为啥和何时?