【问题标题】:Autorelease and assigning to nil自动释放并分配给 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?
  • 如果你能给出两种环境的解释,那就太好了......

标签: objective-c memory-management


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多