ios模式到以前的视图控制器正在创建内存问题

时间:2012-12-24 09:59:09

标签: ios memory-leaks uistoryboardsegue

我有一个非常搞砸的视图系统正在进行中。我经历了几个模态视图,然后想要跳回我原来的视图(循环回来)。唯一的问题是它不断地在其他人之上分配新视图,直到我的内存不足并且应用程序崩溃。如何告诉我的应用程序我永远不会回到预览视图控制器并且它应该释放内存块?我想做这样的事情:     self.presentingViewController = nil; 但它是只读的,我想的更多就是不能那样工作。 这是我的故事板。 enter image description here

1 个答案:

答案 0 :(得分:1)

目前还不完全清楚你在做什么以及为什么它不像你期望的那样有效,但我认为以下方法对你有用:

  1. 我从“根表视图”开始然后我做一个模态

  2. *然后从带有“占位符”文字的视图我模态到游戏控制器

  3. 然后我想模态回到navcontroller / root表视图。

  4. 我假设您正在使用– presentViewController:animated:completion:(或现已弃用的– presentModalViewController:animated:)执行1.和2.

    为了做到3,你必须致电:

    [self.presentingController dismissViewControllerAnimated:ZZZ completion:nil];

    这将从根表视图中将所有模态视图控制器关闭到您要解除的视图控制器。

    如果你已经这样做并且它不能按你的意愿工作,我认为这可能是因为你正在解雇模态视图控制器并在同一个运行循环周期中呈现一个新的控制器。要解决这个问题,只需在根控制器中定义一个方法,例如:

        - (void)presentFirstViewController {
            [self presentViewController:xxxxx animated:YES completion:nil];
        }
    

    稍后你会解雇模态控制器:

    self.presenting.Controller dismissViewControllerAnimated:YES completion:nil];
    

    并呈现新的:

    [rootController performSelector:@selector(presentFirstViewController) withObject:nil afterDelay:0.0];
    

    这最后一步将为运行循环提供一些时间,以便在解除时清理东西,并连续呈现模态控制器。

    Hoper这有帮助。