Mar*_*cin 0 iphone release modalviewcontroller
我试图找到释放模态视图控制器的正确方法.
基本上,我有视图控制器,按下按钮后显示模态视图(全屏).
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
然后,在模态视图中应该被解雇时我打电话给:
[self.delegate didDismissModalView];
Run Code Online (Sandbox Code Playgroud)
最后,父控制器的didDissmissModalView方法如下:
- (void)didDismissModalView
{
// dismiss the modal view controller
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
(我使用ModalViewControllerDelegate协议,这需要实现该方法).
首先我认为我应该在父控制器的dealloc方法中释放tipViewController:
- (void)dealloc
{
[tipViewController release];
}
Run Code Online (Sandbox Code Playgroud)
但后来我看到,它可能是错误的方式,因为模态视图控制器可能会在父控制器关闭之前多次呈现和解除,并且每次它将被分配但最终只被释放一次.
那么也许我应该在呈现之后发布tipViewController?
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
[tipViewController release];
Run Code Online (Sandbox Code Playgroud)
我可以这样做,虽然现在显示模态视图?
或许我应该以这种方式发布模态视图:
- (void)didDismissModalView
{
// dismiss the modal view controller
[self dismissModalViewControllerAnimated:YES];
[self.modalViewController release];
}
Run Code Online (Sandbox Code Playgroud)
假设self.modalViewController现在与tipViewController相同?
你应该在调用presentModalViewController后释放tipViewController:
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
[tipViewController release];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |