【问题标题】:dismissing a UIViewController view and releasing memory关闭 UIViewController 视图并释放内存
【发布时间】:2012-01-23 23:47:27
【问题描述】:

所以我有一个 UIViewController,我通过一个委托来展示它的视图,代码是:

[self.delegate fullStrViewController: self addFullScreenSubview:fullSize];

这里的 fullSize 是我展示的 UIViewController。在 fullSize 内部,我有一个 dimiss 方法,它基本上从超级视图中删除了视图。问题是我实际上在哪里调用 fullSize 上的释放?如果我在调用上面的委托之后这样做,当我调用dismiss时会导致错误,因为 UIViewController 已被释放。有什么想法吗?

【问题讨论】:

    标签: iphone objective-c ipad memory-management uiviewcontroller


    【解决方案1】:

    UIView 的任何子类始终保留其子视图。因此,在将 UIView 添加为 subview 到另一个 UIView 之后,在 UIView 上调用 release 是安全的。但是,当发送dealloc 时,父级会在子级上调用release,因此这假设您只想让子级在父级的生命中持续存在。

    【讨论】:

      【解决方案2】:

      UIView 子类在您将其插入视图层次结构时会保留一个视图。 当您的视图从层次结构中移除时,它将通过释放它来平衡保留。

      如果此时您没有其他对您的对象的引用,它将被解除分配。

      开始使用 ARC,你真的不必担心这些事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-18
        • 2023-04-10
        • 1970-01-01
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多