考虑这个例子:
- (void)doSomething {
@autoreleasepool {
if (someCondition) {
/* ... allocate some autoreleased objects here ... */
return;
}
}
}
以前,使用手动NSAutoreleasePools时,如果我们提前返回,则需要调用[pool drain]
,否则池不会被排空。使用新的@autoreleasepool {}
发布于 2012-02-09 18:56:42
答案是肯定的:
当块正常退出时,无论是通过回落还是定向控制流(如return或break),自动释放池都会恢复到保存状态,释放其中的所有对象。当块因异常退出时,池不会被排空。
来源:http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool
https://stackoverflow.com/questions/9209545
复制相似问题