Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 切换视图,活动字节不断增加_Ios_Objective C_Memory Management_Memory Leaks - Fatal编程技术网

Ios 切换视图,活动字节不断增加

Ios 切换视图,活动字节不断增加,ios,objective-c,memory-management,memory-leaks,Ios,Objective C,Memory Management,Memory Leaks,我想这对我们所有人来说都是一个非常普遍的问题。我已经学习了好几个小时,但可能是因为我太小了,我仍然不知道如何解决这个问题。我希望有人能帮忙 以下是场景: 我在故事板上有3个视图控制器(目前没有一个返回代码) 第一个(主)有7个ui按钮、4个ui标签、3个ui图像,它们都还没有连接到h文件 我使用其中一个按钮连接到下一个视图(模式),在第二个视图上创建一个按钮连接到第三个视图,最后在视图3上创建一个按钮连接回主视图 看起来很简单。但是,当我在instruments/allocation上运行它时,

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

以下是场景:

  • 我在故事板上有3个视图控制器(目前没有一个返回代码)
  • 第一个(主)有7个
    ui按钮
    、4个
    ui标签
    、3个
    ui图像
    ,它们都还没有连接到h文件
  • 我使用其中一个按钮连接到下一个视图(模式),在第二个视图上创建一个按钮连接到第三个视图,最后在视图3上创建一个按钮连接回主视图
  • 看起来很简单。但是,当我在instruments/allocation上运行它时,每次从视图3返回到主视图时,我都会看到活动字节(大约1MB)有一个很大的跳跃。 (重述:到目前为止,“H”或“M”中没有代码)。然后,我尝试删除一些按钮和标签,并重新分配。我看到活动字节数仍在增加,但数量越少。。。显然存在着无限内存增长的问题(我猜)

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

    非常感谢

    另外,在报告中没有发现泄漏,并且它们正以恒定的数量增长

    我试着在主视图的按钮上转到视图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];
    

    您永远不应该使用segue“返回”到以前的控制器(除非您使用展开segue),因为segue总是创建新的视图控制器。因此,您并不是真正返回到主视图,而是创建它的一个新实例。当您经历这个周期时,您将添加越来越多的视图控制器,并且没有一个会被释放。要更正此问题,您应该使用展开序列返回主视图,或者使用DismissViewControllerInitiated:completion:

    Thx Rdelmar返回代码!这是否意味着使用UIViewController*goback=[MainstryBoard InstanceEviewController WithiIdentifier:@“main_one”];[self-presentViewController:goback动画:是完成:无];还将创建一个新的VC?我试图使用dismissViewControllerAnimated:completion:但整个过程只是暂停了,不能去任何地方=。=@Summerhei,是的,这会创建一个新实例。@Summerhei,你应该发布你的代码来展示你的尝试。Rdelmar大师,我在问题下面发布了一些我尝试过的代码。你能给我一些建议吗?