Xcode 4.5 - 应用程序因内存使用过多而崩溃,在4.3上运行正常

时间:2012-09-28 20:08:16

标签: ios xcode memory view uiviewcontroller

我有一个应用程序,使用以下代码从视图控制器转换到视图控制器:

[self addChildViewController:self.aNewViewController];
    [self transitionFromViewController:self.currentViewController
                      toViewController:self.aNewViewController
                              duration:1.0
                               options:UIViewAnimationOptionTransitionFlipFromBottom
                            animations:nil
                            completion:^(BOOL finished) {
                                [self.aNewViewController didMoveToParentViewController:self];
                                [self.currentViewController removeFromParentViewController];
                                self.currentViewController=self.aNewViewController;
                            }];

当我在iOS 5.0设备上使用Xcode 4.3运行它时,它运行非常流畅,使用大约30 - 50 mb。当我在任何设备上使用Xcode 4.5运行它时崩溃,因为每次更改View Controllers时应用程序都会从​​30 - 70 - 100 - 130 mb跳转。看起来每次离开View Controller时都不会释放内存。我正在使用ARC。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

在此处涉及的每个视图控制器中的dealloc()中添加一条日志消息,其中包含一些唯一的字符串,并查看转换中涉及的任何VC是否已被释放。一个或多个未被释放显然是问题。要查找的是保留周期 - 它们的ivars /属性,它们采用委托或保留它的类似参数。例如,NSTimer保留其消息的对象。

如果您能找到这个,那么解决方案是在您的VC中编写一个新方法,通过确保修改这些对象以便不保留其所有者(对于NSTimer,使其无效,然后为零)来为释放做准备。

您可以在转换完成块中发送此新消息。