我遇到了一个奇怪的情况,即按下按钮时我正在加载的视图控制器的保留计数过多。
这是代码:
-(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 个保留?我确保以前从未创建过。
谢谢。