【问题标题】:Should I call removeFromSuperview or is release just fine?我应该调用 removeFromSuperview 还是 release 就好了?
【发布时间】:2011-11-21 13:58:20
【问题描述】:

我在创建 UITableViewCell 的子类时使用 addSubview 方法添加了一个子视图。

然后,当我不再需要视图时,我在 dealloc 方法中释放了它。 我的问题是释放视图的最佳方式是什么?

[myView release] 够用还是我应该打电话:

[myView removeFromSuperview];
[myView release];

或者只是[myView removeFromSuperview]

感谢您的帮助。

【问题讨论】:

    标签: iphone ios iphone-sdk-3.0 uikit


    【解决方案1】:

    简单的规则:如果你保留它,你必须释放它。

    我假设您是说您不再想要屏幕上的视图。比你必须打电话给removeFromSuperView 否则superview 仍然保留视图并释放它只会将所有权转移给superview。

    【讨论】:

      【解决方案2】:

      这取决于您如何创建视图。当你传入子视图时,你应该确保它不属于你。

      我将在这里走一般路线。

      UIView * mySubview = [[UIView alloc] initWithFrame:frame];
      [superView addSubview:mySubview];
      [mySubview release];
      

      您现在拥有您想要的子视图,但 superView 拥有它。 如果您的 superView 在视图层次结构中并且您自己不拥有它,那么当您的 superView 被从视图层次结构中取出时,它的子视图也将被它们各自的所有者释放。

      【讨论】:

        猜你喜欢
        • 2014-12-07
        • 1970-01-01
        • 2014-05-26
        • 2018-11-03
        • 1970-01-01
        • 2015-09-07
        • 2021-12-03
        • 2011-05-06
        • 1970-01-01
        相关资源
        最近更新 更多