ボタンが押されたときに読み込んでいるビューコントローラの保持回数が異常に多いという問題が発生しました。最近作成されたオブジェクトの保持数が多い。 Objective-C
-(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新が初めて実行されるときだけで作成されたとき、保持カウントが5:
これはコードです。 (1にする必要があります)。
モーダルビューを削除して前のオブジェクトを解放するには、ViewSpaceオブジェクトをアンロードする必要があるときは、viewSpaceWasDismissed関数を呼び出します。
問題は、保持カウントが0になることはなく、ViewSpaceのdeallocメソッドは決してメモリリークを引き起こして呼び出されないということです。
私の質問は、最近作成されたViewControllerが5を保持することはどうですか?私はこれまでに決して作成されていないことを確認しました。
ありがとうございました。
は 'retainCount'は全く役に立ちません。あなたはそれについて考えるあなたの時間を無駄にしています。 – bbum
はい、問題はViewSpaceオブジェクトのdeallocに達していないことです。これは私のアプリで大きなメモリ使用量を引き起こし、クラッシュします。 – NemeSys
@bbumあなたはretainCountタグのrssフィードを見ていますか? ;) – Abizern