- (void)foo
{
@try {
for (id o in os){
@autoreleasepool {
for (id o2 in moreOs){
// create a lot of autoreleased objects.
}
//exception raised
}
}
}
@catch (NSException *exception) {
// handle the exception
}
}
将编译器重写上面的代码排空水池的异常的情况下,还是会泄露?@autorelease指令和异常处理
如果编译器确实重写了它,它会怎么做?
请注意,以任何理由,但表示无法恢复的程序故障异常的使用是对SDK的设计模式一节“自动释放池和嵌套自动释放池的影响范围”。如果您的异常抛出系统框架代码的堆栈框架,则行为未定义。 – bbum