自动释放并分配给 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的主要内容,如果未能解决你的问题,请参考以下文章
我应该在重新分配之前调用分配给保留属性的自动释放对象的释放吗?