处理模态视图控制器的一个可取的方法是向我们发送通知以通知呈现它的类释放它。通常,您使用与此类似的代码来显示模态视图。
SomeClass *yourViewController = [[SomeClass alloc] initWithNibName:@"SomeClass" bundle:nil];
[self presentModalViewController: yourViewController animated: YES];
[yourViewController release];
使用上面的代码,您的模态视图应该以 1 的保留计数结束。当您关闭它时,父视图将释放它并从内存中清除它。模态视图中的“关闭”按钮应执行如下代码:
- (void)dismissSelf{
[[NSNotificationCenter defaultCenter] postNotifivationName:@"I'm done" object:self];
}
回到你的父视图控制器,你应该监听这个通知,然后在通知发布时关闭模式视图。
也就是说,回答你的问题:
模态视图控制器永远不会自行关闭。发布通知,然后让导航控制器处理它。
在关闭第二个模式视图之前,您不能关闭第一个模式视图。如果这样做,您将收到 EXC_BAD_ACCESS 错误。将第二个模态视图视为第一个模态视图的“内部”。如果第一个被解雇,第二个将被拖走,但它没有被解雇。