【问题标题】:What is the scope of (nested) autorelease pools?(嵌套)自动释放池的范围是什么?
【发布时间】:2010-11-26 21:57:00
【问题描述】:

我正在 for 循环中创建一个自动释放池(在方法 A 中)。在循环的每次迭代中,我都会调用另一个方法(方法 B)。方法 B 将自动释放的对象返回给方法 A。如果我在方法 A 中的 for 循环中耗尽池,是否会释放从方法 B 发送的对象?

谢谢!

【问题讨论】:

    标签: objective-c cocoa cocoa-touch memory-management autorelease


    【解决方案1】:

    是的 - 任何时候发送一个对象-autorelease,它都会被添加到最高级别的自动释放池中。只要您不在方法 B 中或调用堆栈的下方创建任何新的自动释放池,方法 A 的池就应该是最高级别的池。

    【讨论】:

    • 唯一的问题是线程——自动释放池堆栈是每个线程的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2010-10-09
    • 2011-09-17
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多