gpt4 book ai didi

iphone - UIViewController -dealloc 在关闭模态视图 Controller 后被调用

转载 作者:行者123 更新时间:2023-12-03 20:22:23 25 4
gpt4 key购买 nike

我的应用程序中有一个显示 UITableView 的 View 。该 View 是在 nib 文件中创建的,并具有自定义 View Controller 。该 View 的 UIViewController 子类充当 UITableView 的数据源和委托(delegate)。

我的 UITableView 根据我的数据显示几行。然后,最后一行显示不同的文本:“添加另一个...”。如果选择最后一行,我将呈现一个模态视图 Controller (以允许用户添加更多数据)。当我关闭模态视图 Controller 时,我再次看到原始 View (如预期),并且一切看起来都很好。但是,当我尝试与此 View 交互时,应用程序崩溃了。

通过 UIViewController(对于 UITableView)放置多个 NSLog() 语句,我确定在模态视图关闭后立即调用 -dealloc 方法。这解释了当我尝试用该 View 做某事时发生的崩溃。但是,我不知道为什么在此 View Controller 上调用 -dealloc。

要关闭模态视图 Controller ,我有:

[self dismissModalViewController:YES];

作为模态视图 Controller 的 UIViewController 中 IBAction 方法中的代码。此操作与相应 nib 文件中的取消按钮相关联。

另外,我从View Controller Programming Guide的理解是可以从内部关闭模态 Controller ,但使用委托(delegate)会更健壮。我最初使用委托(delegate),但去掉了委托(delegate)以简化调试。我只是将委托(delegate)放回以进行双重检查,并且在使用委托(delegate)时会发生相同的行为。模态 Controller 的 Action 方法调用实现为:

[[self delegate] myModalViewController:self didAddObject:obj];  

父 View Controller 中的委托(delegate)实现是:

[self dismissModalViewController:YES]

如果有人以前见过这个,或者对可能发生的情况或如何调试这个有任何建议,我将不胜感激。

最佳答案

如果-dealloc被调用,则表示正在释放 View Controller 。尝试在 View Controller 中实现 -release:

-(void)release {
NSLog(@"view controller released");
[super release];
}

以便您可以在发生此意外释放消息时使用调试器检查调用堆栈。

关于iphone - UIViewController -dealloc 在关闭模态视图 Controller 后被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com