ボタンが押されたときにロードしているView Controllerの保持カウントが過剰になるという奇妙なケースが発生しています。
これはコードです:
-(IBAction)new
{
if (!viewSpace)
viewSpace = [[ViewSpace alloc] initWithNibName:@"ViewSpace" bundle:nil];
viewSpace.delegate = self;
viewSpace.view.frame = CGRectMake(0, 0, viewSpace.view.frame.size.width, viewSpace.view.frame.size.height);
[self presentModalViewController:viewSpace animated:YES];
NSLog(@"Count Retain: %d",[viewSpace retainCount]);
}
-(void)viewSpaceWasDissmissed:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
[viewSpace release];
NSLog(@"Count Retain: %d",[viewSpace retainCount]);
}
IBAction New の初回実行時、作成直後の保持カウントは 5 です。(1 でなければなりません)。
ViewSpace オブジェクトをアンロードする必要がある場合、モーダル ビューを削除して前のオブジェクトを解放するために、viewSpaceWasDismissed 関数を呼び出します。
問題は、保持カウントが 0 に達せず、ViewSpace の dealloc メソッドが呼び出されず、メモリ リークが発生することです。
私の質問は、最近作成された ViewController に 5 つの保持がある可能性はありますか? 以前に作成されたことがないことを確認しました。
ありがとう。