首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >@autoreleasepool {}在提前返回/退出时会耗尽吗?

@autoreleasepool {}在提前返回/退出时会耗尽吗?
EN

Stack Overflow用户
提问于 2012-02-09 18:55:12
回答 1查看 2.8K关注 0票数 17

考虑这个例子:

- (void)doSomething {
   @autoreleasepool {
      if (someCondition) {

         /* ... allocate some autoreleased objects here ... */

         return;
      }
   }
}

以前,使用手动NSAutoreleasePools时,如果我们提前返回,则需要调用[pool drain],否则池不会被排空。使用新的@autoreleasepool {}

EN

回答 1

Stack Overflow用户

发布于 2012-02-09 18:56:42

答案是肯定的:

当块正常退出时,无论是通过回落还是定向控制流(如return或break),自动释放池都会恢复到保存状态,释放其中的所有对象。当块因异常退出时,池不会被排空。

来源:http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9209545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档