加载视图控制器后,应用程序运行缓慢,然后卸载大约15-20次

使用:Xcode 4.6故事板ARC模型inheritance到SecondViewController

我有一个应用程序,主要的ViewController加载一个新的veiwController时,设备旋转到右侧。 当应用程序启动时,一切都很好。 如果我旋转设备,然后回来卸载第二个视图控制器,约15-20倍的应用程序是非常长老。 我已经缩小了,它只发生在seconed视图控制器加载时,只有当我旋转设备的时间nunmber。 我也缩小了这是一个记忆问题。 我安装了一个应用程序,logging使用和可用的内存。 当我旋转设备多次时,我的记忆从400mb到900mb。 我正在尝试尽可能多地提供信息。 每个视图有8个NSTimers每秒钟触发。

有没有办法编程卸载视图,以确保被卸载?

我已经包含这个代码来确保加载和卸载:

` – (void)setView:(UIView *)aView {NSLog(@“>>> Entering%s <<<”, PRETTY_FUNCTION );

if (!aView) // view is being set to nil { NSLog(@"Should be unloading now"); } [super setView:aView]; NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 

}

日志结果:2013-04-22 16:42:03.588 xxxxxxxx [xxxxxxx] >>>input – [GraphViewController setView:] <<< 2013-04-22 16:42:03.589 xxxxxxxx [xxxxxxx] <<<离开 – GraphViewController的setView:] >>>

“我不知道我需要什么来纠正这个问题。

任何“正确的方向”将非常赞赏。

谢谢

您还没有提供关于如何“卸载”SecondViewController的更多信息。 你也在做一个模态赛车吗? 如果是这样,那就是你的问题 – 每次你做一个segue,你实例化一个新的视图控制器,如果这些是模式segues,呈现的控制器有一个强指针的呈现控制器,所以这些控制器都不会得到释放当你来回走动。

通常情况下,你不应该使用任何东西而不是使用任何东西倒退到故事板。 所以,解决你的问题是使用unwind segue从SecondViewController返回到MainViewController – 这实际上将返回到您来自的MainViewController的同一个实例,并且SecondViewController将被释放。 如果你不知道如何放松,我会编辑我的答案,告诉你如何。

编辑后:

为了放松身心,你做了两件事。 在你要回到的控制器中,添加一个方法 – 两个重要的事情就是它是一个IBAction,并且它有一个单独的参数input到UIStoryboardSegue *中。 不pipe你怎么称呼它,它甚至不需要在里面有任何代码,尽pipe我通常会把日志声明放在一个日志声明中,以确保它被调用。 然后,在控制器中的IB中,您可以控制从UI元素(例如button或表格视图单元格)的拖动,或者从控制器本身拖动(如果要从代码中激发它),直到在场景的底部 – 重要的是要注意,您要从UI元素拖动到同一控制器中的退出图标,而不是控制器之间。 当你松开退出图标时,你会看到你用上面提到的签名创build的任何方法。 select一个你想要的,就是这样。 如果要将任何信息传递回目标控制器,则可以像在其他任何segue一样在源控制器中实现prepareForSegue。