- 909 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:47:32 ]
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
@try { ここで例外発生。 } @catch (NSException * e) { NSLog(@"%@ @catch in %@", e, NSStringFromSelector(_cmd)); @throw; } @finally { [pool release]; } で、上位のレベルで例外を受ける時、例外は pool に登録されるせいで、@finally 中の [pool release]; で解放されちゃって、 上位のレベルで例外を触るとバッド・アクセスになる。 例外発生時に pool がメモリリークするから @finally に入れたのだが、逆にこんな問題が出てくるとは。 NSAutoreleasePool を作らないという選択肢以外に、何かリークしない上手い対処法無いかな? @throw; しないで、上位には NSError で渡すとか考えてるけど。 例外処理とか今まで殆ど触ったこと無いから、勝手が分からない。
|

|