gpt4 book ai didi

ios - 如何正确替换 View Controller

转载 作者:行者123 更新时间:2023-11-29 02:56:51 25 4
gpt4 key购买 nike

我只是不明白我做错了什么。我有 2 个不相关的 View Controller ,它们是我在 storyboard 中通过将 View Controller 拖到屏幕上创建的。每个在 Storyboard中都有其名称标识符,我用它们的名称替换它们。

问题是,在第一次更换之后,我收到了数十条与现实无关的内存警告,因为我的内存消耗约为 59M 并且一直保持这种状态。当我从 A 切换到 B 然后再切换回 A 时,有时它会因“内存不足”(59M!!)而崩溃。

替换 View Controller 时我做错了什么???

- (IBAction)goMatrix:(id)sender
{
UIViewController *mainV=[self.storyboard instantiateViewControllerWithIdentifier:@"MatrixView"];
mainV.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:mainV animated:YES completion:^(void)
{
scroller.delegate=nil;
scroller=nil;
[imagesBuffer removeAllObjects];
[scroller removeFromSuperview];
[stripView removeFromSuperview];


}];

}

我在它们中都有一个带有图像的 ScrollView ,我只是从 super View 中删除了它,我只是不明白我还能做些什么来真正清理东西(尽管内存只是59M )

  • 我唯一拥有高内存的时刻是当我更换它们时,它的 134M 仅持续 1 秒(!)

最佳答案

如果你的App是单 View 结构(没有嵌入UINavigationControllerUITabBarController),你可以使用:

// App Delegate
UIViewController *mainV=[self.storyboard instantiateViewControllerWithIdentifier:@"MatrixView"];
self.window.rootViewController = mainV;
[self.window makeKeyAndVisible];
stripView = nil;

如果您使用 ARC,旧的 View Controller 将自动从内存中删除。

如果您在 View Controller 中编写,您可以使用:

UIViewController *mainV=[self.storyboard instantiateViewControllerWithIdentifier:@"MatrixView"];
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.window.rootViewController = mainV;
[delegate.window makeKeyAndVisible];
stripView = nil;

关于ios - 如何正确替换 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23778437/

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