首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone - modalViewController版本

iPhone - modalViewController版本
EN

Stack Overflow用户
提问于 2011-01-21 21:39:39
回答 1查看 1.1K关注 0票数 0

我试图找到合适的方式来释放模式视图控制器。

基本上,我有一个视图控制器,它在按下按钮后显示模式视图(全屏)。

代码语言:javascript
运行
复制
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];   

然后,在模式视图中,当它应该被丢弃时,我调用:

代码语言:javascript
运行
复制
[self.delegate didDismissModalView];

最后,父控制器的didDissmissModalView方法如下:

代码语言:javascript
运行
复制
- (void)didDismissModalView 
{
    // dismiss the modal view controller
    [self dismissModalViewControllerAnimated:YES];
}

(我使用ModalViewControllerDelegate协议,它需要实现该方法)。

首先,我想我应该在父控制器的dealloc方法中释放tipViewController:

代码语言:javascript
运行
复制
- (void)dealloc 
{
    [tipViewController release];
}

但是后来我发现,这可能是错误的,因为在父控制器关闭之前,模式视图控制器可能会被多次呈现和取消,并且每次它都会被分配,但最终只释放一次。

那么,也许我应该在展示tipViewController之后发布它?

代码语言:javascript
运行
复制
TipViewController * tipViewController = [[TipViewController alloc] init];
tipViewController.delegate = self;
[self presentModalViewController:tipViewController animated:YES];
[tipViewController release];

虽然现在显示了模式视图,但我可以这样做吗?

或者我应该这样发布模式视图:

代码语言:javascript
运行
复制
- (void)didDismissModalView 
{
// dismiss the modal view controller
    [self dismissModalViewControllerAnimated:YES];
    [self.modalViewController release];
}

假设self.modalViewController现在与tipViewController相同?

EN

回答 1

Stack Overflow用户

发布于 2011-01-21 21:57:34

您应该在调用presentModalViewController之后释放tipViewController:

代码语言:javascript
运行
复制
 TipViewController * tipViewController = [[TipViewController alloc] init];
 tipViewController.delegate = self;
 [self presentModalViewController:tipViewController animated:YES];
 [tipViewController release];
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4759427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档