存储器未在IOS 5.1与ARC和故事板释放(memory not releasing with A

2019-06-24 08:17发布

我正在开裂我的内存问题的头我的应用程序,该应用程序,不同的是做工精细,使用它为10到20分钟的时候,它会崩溃,一旦触及内存不足警告,是非常非常非常laggy。

编辑:如何poptoviewcontroller?

introvideo-> welcomeview&tutorialview-> mainviewcontroller-> scannerviewcontoller-> questionview - >(如果答案正确 - > correctView)其他 - > wrongView

我如何弹回至MAINVIEW控制器?

下面的代码是解决添加视图控制器到navigationcontroller.viewcontroller堆栈。 由于我使用的故事板从视图 - 控制推到与出空间PoPing另一个视图控制器上。 该代码将弹出到那些已经在视图控制器堆栈中的视图 - 控制。

作为附加的我的故事板的流程:

http://dl.dropbox.com/u/418769/storyboard%20flow.png

介绍视频 - >欢迎查看&教程视图(如用户名存在!) - >主视图控制器

这是主要的文件,用户总是支持去。

http://dl.dropbox.com/u/418769/scannerViewController.h

http://dl.dropbox.com/u/418769/scannerViewController.m

我使用的是自定义的SEGUE流行viewcontrollers,解决问题的一部分。

-(void)perform {
    UIViewController *sourceVC = (UIViewController *) self.sourceViewController;
    NSInteger index = -1;
    NSArray* arr = [[NSArray alloc] initWithArray:sourceVC.navigationController.viewControllers];
    for(int i=0 ; i<[arr count] ; i++)
    {
        if([[arr objectAtIndex:i] isKindOfClass:NSClassFromString(@"mainViewController")])
        {
            index = i;
        }       
    }    

    [UIView transitionWithView:sourceVC.navigationController.view duration:0.5
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    animations:^{

                        [sourceVC.navigationController popToViewController:[arr objectAtIndex:index] animated:NO];

                    }
                    completion:^(BOOL  completed)
     {     

             }                      
     ];

}

然而,应用程序仍然吃起来RAM和VRAM。

我非常感谢所有的朋友在这里帮助解决我的问题,没有强有力的价值造成这个问题?

Answer 1:

当你说你使用的是“自定义SEGUE弹出的主视图控制器”,我不知道我是否完全理解了。 您是否使用performSegueWithIdentifier ? 如果是这样,那么你就不会弹出; 你推的主视图控制器的另一个副本!

在大多数的故事板,你看不到赛格瑞了循环回父视图左侧右侧子视图(和你的屏幕快照显示的赛格瑞的重新进入到主视图控制器,这是一个有点令人目眩的数字红旗的)。 这是一个更为常规故事板(取自开始故事板在IOS 5在雷Wenderlich)):

通常你会解雇子视图的东西,如后续,不使用SEGUE。

[self.navigationController popViewControllerAnimated:YES];

的,如果你想退流行多层次的,你可以使用popToViewControllerpopToRootViewControllerAnimated 。 或者,如果你使用模式塞格斯,你会解雇与形式上dismissViewControllerAnimated

如果我误解你的“自定义SEGUE弹出” mean't什么,你可以提供你所使用的代码做呢?



Answer 2:

计算机辅助分析是解决这个问题的方法。 不要建立和分析并解决所有问题。 运行下的泄漏和分配仪器您的应用程序。 使用堆射分析。



Answer 3:

  1. @肯thomases分析发现上。 另请参阅查找泄漏 。

  2. 我相信你正在使用ARC?

  3. 你能解释一下什么是上面的代码示例的目的和你的应用程序在做,要求这样的事情? 这感觉就像你正在处理的症状,而不是解决问题。

  4. 在回答你的问题,利用strong不太可能是问题的根源,除非你有很强的参考周期 (见过渡到ARC )。 如果你遵循肯的建议,您确定您的应用程序正在泄漏内存(假设它是),如果是的话,它在哪里。 在这一点上,如果您还有不明白的泄漏源,你可以在这里发布违规代码,并且我相信会有很多人愿意提供帮助。 另外,如果你有你想知道是否一些代码strong引用是不恰当的,张贴相关的代码,并再次,我相信我们会很乐意帮助,如果我们能。



文章来源: memory not releasing with ARC and storyboard in iOS 5.1