我试图找到合适的方式来释放模式视图控制器。
基本上,我有一个视图控制器,它在按下按钮后显示模式视图(全屏)。
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
然后,在模式视图中,当它应该被丢弃时,我调用:
[self.delegate didDismissModalView];
最后,父控制器的didDissmissModalView方法如下:
- (void)didDismissModalView
{
// dismiss the modal view controller
[self dismissModalViewControllerAnimated:YES];
}
(我使用ModalViewControllerDelegate协议,它需要实现该方法)。
首先,我想我应该在父控制器的dealloc方法中释放tipViewController:
- (void)dealloc
{
[tipViewController release];
}
但是后来我发现,这可能是错误的,因为在父控制器关闭之前,模式视图控制器可能会被多次呈现和取消,并且每次它都会被分配,但最终只释放一次。
那么,也许我应该在展示tipViewController之后发布它?
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
[tipViewController release];
虽然现在显示了模式视图,但我可以这样做吗?
或者我应该这样发布模式视图:
- (void)didDismissModalView
{
// dismiss the modal view controller
[self dismissModalViewControllerAnimated:YES];
[self.modalViewController release];
}
假设self.modalViewController现在与tipViewController相同?
发布于 2011-01-21 21:57:34
您应该在调用presentModalViewController之后释放tipViewController:
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
[tipViewController release];
https://stackoverflow.com/questions/4759427
复制相似问题