2011年5月28日土曜日

例外処理とAutoreleasePool

例外処理内で作ったAutoreleasePoolは@fainallyで解放しなくていいらしい

-(NSMutableArray *)testes{
 NSMutableArray * returnArr = [NSMutableArray array];
     @try{
       for(int Cnt= 0;Cnt<100;Cnt++){
           NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init];
       //[returnArr addObject:@"なにか"];  
            NSLog(@"%d番目は%@",Cnt,[returnArr objectAtindex:Cnt]);//←例外発生
            [pool release];//ここにはこない
       }
     }@catch (NSException * e) {
           NSLog(@"%@",e);
     }@finally {
     //pool解放なし
     }
     return returnArr;
}
…逆に今までfinallyに書いてたからクラッシュしてたのかしらー。

参考 NSAutoreleasePool祭り