- (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