gpt4 book ai didi

ios - 查看 Controller 未被释放

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:31:29 25 4
gpt4 key购买 nike

我有 2 个 Controller InitViewController 和 SettingsViewController。每个 View 都有一个调用另一个 View 的按钮:

初始化 View Controller

@interface InitViewController : UIViewController
- (IBAction)loadSettings:(id)sender;
@end

@implementation InitViewController
- (IBAction)loadSettings:(id)sender {
SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
[self presentViewController:vc animated:YES completion:nil];
vc = nil;
}
@end

设置 View Controller

@interface SettingsViewController : UIViewController
- (IBAction)back:(id)sender;
@end

@implementation SettingsViewController
- (IBAction)back:(id)sender {
InitViewController *vc = [[InitViewController alloc] initWithNibName:@"InitViewController" bundle:nil];
[self presentViewController:vc animated:YES completion:nil];
vc = nil;
}
@end

当我通过多次点击按钮来分析应用程序并对其进行测试时,我看到 InitViewController 和 SettingsViewController 的实例仍然存在 => PrintScreen

我做错了什么?

最佳答案

您的 SettingsViewController 不会返回到创建它的 InitViewController。相反,它会创建 InitViewController实例并显示它。因此,您最终会得到一堆在 InitViewControllerSettingsViewController 实例之间交替的 View Controller 。

由于您在呈现任何一种类型的 View Controller 后都不会关闭它,因此它们都不能被释放。

您的 -[SettingsViewController back:] 操作应该自行关闭,而不是创建和呈现一个新的 InitViewController

@implementation SettingsViewController

- (IBAction)back:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}

关于ios - 查看 Controller 未被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500702/

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