切换视图,实时字节不断增加

时间:2013-11-03 05:19:28

标签: ios objective-c memory-management memory-leaks

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

以下是该方案:

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

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

    所以这是我的问题:我们怎么解决这个问题?为什么他们会将那么多资源分配给按钮,标签和图像,即使它们没有附加任何内容?

    非常感谢!!

    PS。在报告中没有发现任何泄漏,并且它们正以不变的数量增长......

    我在主视图的按钮上尝试了这个,但是当我再次回来时,它可以回到view3上的主...

    [self dismissViewControllerAnimated:YES completion:nil];
    
    mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:Nil];
    
    UIViewController *go2= [mainStoryboard instantiateViewControllerWithIdentifier:@"view2"];
    
    [self presentViewController:go2 animated:YES completion:nil];
    

1 个答案:

答案 0 :(得分:2)

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