【问题标题】:IOS: release viewcontroller in storyboardIOS:在情节提要中释放视图控制器
【发布时间】:2013-01-04 19:16:02
【问题描述】:

我有这段代码可以打开带有情节提要的视图控制器

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    secondViewController = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.view addSubview:secondViewController.view];

它工作正常,但是当我删除它时,我想释放 secondViewController

[secondViewController.view removeFromSuperview];

为了释放它???当我调用 secondViewController 时没有分配...

【问题讨论】:

    标签: ios storyboard


    【解决方案1】:

    -instantiateViewControllerWithIdentifier: 返回一个 autoreleased 对象。你不必释放它。当您从其superview 中删除其view 时,它将被释放。如果您使用的是ARC,则根本不应该问这个问题......

    【讨论】:

    • 酷,那你就没事了。无需释放。
    【解决方案2】:

    我假设您使用的是 ARC。只需写secondViewController = nil;。它应该会自动释放。

    【讨论】:

      【解决方案3】:

      首先,区分你的可视化 UIView 实例和 UIViewController 实例是很重要的。 instantiateViewControllerWithIdentifier 调用返回一个具有 UIView 属性的视图控制器对象(UIViewController 不需要显式释放,因为它是一个自动释放的实例) - 这个 UIView 是要添加到超级视图的它也被它保留,只要它确实是某个视图的子视图。从超级视图中删除该视图并提供您使用 ARC 后,应该释放该视图,除非您对它的 UIViewController 持有强引用,在这种情况下,只需为 UIViewController 属性分配一个 nil 值即可处理它。如果不使用 ARC,则只有在显式保留视图 controller(不是视图)

      时才需要调用“release”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 2013-06-04
        • 2013-05-23
        • 2011-12-23
        • 2012-06-22
        • 2019-12-04
        • 2023-04-10
        相关资源
        最近更新 更多