1

我想这对我们所有人来说都是一个非常普遍的问题。我已经做了几个小时的学习,但可能因为我太初级,我仍然不知道如何解决它。我希望有人能帮忙。

这是场景:

  1. 我在故事板上有 3 个视图控制器(此时它们都没有返回代码)
  2. 第一个(主要的)有 7 UIbuttons、 4UIlabels和 3 UIImages,它们都没有连接到 h 文件。
  3. 我使用其中一个按钮连接到下一个视图(模态),并在第二个视图上创建一个按钮以连接到第三个,最后在视图 3 上创建一个按钮以连接回主视图。

看起来很简单。但是,当我在仪器/分配上运行它时,每次从视图 3 回到主视图时,我都会看到实时字节(大约 1MB)有一个很大的跳跃。(回顾:到目前为止,“H”或“M”中没有代码)。然后,我尝试删除一些按钮和标签,并重新分配。我看到活动字节仍在增加,但数量较少......显然存在无限的内存增长问题(我猜)。

所以这是我的问题:我们如何解决这个问题?为什么他们会为按钮、标签和图像分配这么多资源,即使他们没有附加任何东西?

非常感谢!!

PS。报告中没有发现泄漏,而且还在不断增长……

我在主视图的按钮上尝试了此操作以转到视图 2,但是当我再次返回时,它只能返回到视图 3 上的主视图...

[self dismissViewControllerAnimated:YES completion:nil];

mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:Nil];

UIViewController *go2= [mainStoryboard instantiateViewControllerWithIdentifier:@"view2"];

[self presentViewController:go2 animated:YES completion:nil];
4

1 回答 1

2

您永远不应该使用 segue“返回”到以前的控制器(除非您使用 unwind segue),因为 segue 总是会创建新的视图控制器。所以,你并没有真正回到主视图,你正在创建它的一个新实例。当你经历这个循环时,你会添加越来越多的视图控制器,而且它们都没有被释放。要纠正这个问题,您应该使用 unwind segue 返回主视图,或者使用 dismissViewControllerAnimated:completion 返回代码:

于 2013-11-03T05:25:35.797 回答