Ios 加载viewcontroller后应用程序运行缓慢,然后卸载约15-20次

Ios 加载viewcontroller后应用程序运行缓慢,然后卸载约15-20次,ios,memory-leaks,rotation,viewcontroller,viewdidunload,Ios,Memory Leaks,Rotation,Viewcontroller,Viewdidunload,使用: 代码4.6 故事板 弧 模型分段到第二视图控制器 我有一个应用程序,它有一个主ViewController,当设备向右旋转时,它会加载一个新的veiwController。当应用程序启动时,一切都很好。如果我旋转设备,然后将其放回到卸载secondview控制器的位置,大约15-20倍的应用程序非常缓慢。我已经缩小范围,它只发生在加载Seconded view控制器时,并且只发生在我旋转设备若干次时。我还缩小了这是一个记忆问题。我安装了一个应用程序,可以跟踪使用的和可用的内存。当我多次旋

使用: 代码4.6 故事板 弧 模型分段到第二视图控制器

我有一个应用程序,它有一个主ViewController,当设备向右旋转时,它会加载一个新的veiwController。当应用程序启动时,一切都很好。如果我旋转设备,然后将其放回到卸载secondview控制器的位置,大约15-20倍的应用程序非常缓慢。我已经缩小范围,它只发生在加载Seconded view控制器时,并且只发生在我旋转设备若干次时。我还缩小了这是一个记忆问题。我安装了一个应用程序,可以跟踪使用的和可用的内存。当我多次旋转设备时,我的内存从400mb增加到900mb。我正在尽力提供尽可能多的信息。每个视图有8个N计时器,每秒触发一次

是否有方法以编程方式卸载视图,以确保正在卸载

我已加入此代码以确保装卸:

`-(void)setView:(UIView*)aView { NSLog(@“>>>输入%s”,函数); }

日志结果:
2013-04-22 16:42:03.588 xxxxxxx[xxxxxxx]>>>输入-[GraphViewController设置视图:][p>您没有给出多少关于如何“卸载”SecondViewController的信息。你也在做模态转换吗?如果是这样,那就是你的问题——每次你做一个序列,你都会实例化一个新的视图控制器,如果这些是模态序列,那么呈现的控制器有一个指向呈现控制器的强指针,所以在你来回移动时,这些控制器都不会被释放

作为一条规则,在故事板中,你不应该使用任何东西,而应该使用一个放松的片段。因此,问题的解决方案是使用一个展开序列从SecondViewController返回到MainViewController——这实际上会返回到您来自的同一个MainViewController实例,SecondViewController将被释放。如果你不知道如何进行放松,我将编辑我的答案,告诉你如何进行

编辑后:


要进行一段放松的旅程,你需要做两件事。在您要返回的控制器中,您添加了一个方法——两件重要的事情是它是一个iAction,并且它有一个输入到UIStoryboardSegue*的参数。你怎么称呼它并不重要,它甚至不需要任何代码,尽管我通常会在日志语句中添加代码,以确保它被调用。然后,在要从中展开的控制器的IB中,您可以控制从UI元素(如按钮或表视图单元格)中的拖动(或从控制器本身,如果您想从代码中启动它),一直到场景底部的绿色退出图标——需要注意的是,您正在从UI元素拖动到同一控制器中的退出图标,而不是在控制器之间。当您松开退出图标上的拖拽时,您将看到使用上面提到的签名创建的任何方法。选择你想要的,就这样。如果要将任何信息传递回目标控制器,您可以在源控制器中实现prepareForSegue,就像在任何其他segue中一样。

感谢您提供的宝贵信息。我不知道倒退是怎么回事。我没有放松的经验。如果你有样品,那就太好了。再次感谢你!!我没有用于加载/um第二个viewcontroller的UI元素。我正在使用下面的代码。@Eric,然后,正如我所说的,您从控制器本身(底部栏中的图标)拖动到退出图标。在这种情况下,你需要给segue一个标识符,这样你就可以在代码中使用它了。对不起,我想是的。再次感谢。
if (!aView)         // view is being set to nil
{
    NSLog(@"Should be unloading now");
}

[super setView:aView];

NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__);