【问题标题】:When to release/autorelease VC's that will be pushed何时释放/自动释放将被推送的 VC
【发布时间】:2011-09-15 17:36:15
【问题描述】:

我遇到过以前在通过 UINavigationController 推送后释放 viewController 时出现的问题,所以我现在自动释放每个将被推送的 viewController。但是我经常看到开发者在push之后释放viewController的代码。

我的问题是,当 UIViewController 被推入堆栈时,何时是释放/自动释放 UIViewController 的正确时间?

谢谢

【问题讨论】:

    标签: iphone objective-c memory-management uinavigationcontroller


    【解决方案1】:

    发布

    导航控制器在推送时保留视图控制器。

    我建议您之前的任何问题都与上述过程无关,而是在其他地方。

    【讨论】:

    • 但我遇到的问题是推送后释放 v/c 时出现 exc_bad_access。
    • 如果您可以展示一个重现此问题的代码块,那么我们可以帮助解决该个别问题。我非常怀疑这与我的答案中列出的过程有关。
    • 我目前没有遇到问题,但如果遇到问题我会发布。
    • EXC_BAD_ACCESS 可能与 VC 中的对象有关,但与 VC 本身无关。
    【解决方案2】:

    ViewController *yourViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    [self.navigationController pushViewController:yourViewController animated:YES];
    [yourViewController release]; 
    

    【讨论】:

      【解决方案3】:

      在推送之前自动释放视图控制器还是在推送之后释放视图控制器几乎没有区别。推送后的释放效率更高一些,因为它会导致视图控制器更快地释放(更快地释放内存),但自动释放也会很快释放它,但会晚一点。

      【讨论】:

        猜你喜欢
        • 2011-11-09
        • 2011-05-03
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 2011-05-08
        • 2012-07-02
        • 1970-01-01
        相关资源
        最近更新 更多