【问题标题】:Does UIView's removeFromSuperView method remove the UIView from memoryUIView 的 removeFromSuperView 方法是否从内存中删除 UIView
【发布时间】:2011-01-14 11:09:00
【问题描述】:

UIView 的 removeFromSuperView 方法是否会从内存中删除 UIView?我只是想确定视图不再使用任何内存?

【问题讨论】:

    标签: iphone cocoa cocoa-touch


    【解决方案1】:

    UIView 保留其子视图,因此当您调用 -removeFromSuperview 方法时,您的视图对象将被释放。

    因此,如果您的内存管理一切正常,并且您的视图没有被其他任何东西保留,那么可以 - 您的视图应该被释放并从内存中删除。

    简单地从超级视图中删除视图可能不足以解除分配它的可能示例可以是具有出口连接并为它声明具有保留属性的属性的视图 - 在这种情况下,它在从 nib 文件加载时由控制器保留并且您可能需要针对这种情况发布该视图:

    [iVarView removeFromSuperview];
    self.iVarView = nil;
    

    【讨论】:

    • 最大的例外是,如果您删除的视图由辅助视图控制器管理,则该视图控制器还必须释放视图,然后才能从内存中删除。
    • @Peylo,是的,这就是我在“内存管理还可以”中的意思,但这似乎不是一个好词
    【解决方案2】:

    是的。一旦调用了removeFromSuperView 方法,该视图也会从内存中释放。

    如果您想通过 Apple 的文档确认,here 是链接。

    【讨论】:

    • 这个答案不应该是“最佳答案”,因为它并不完全正确。这取决于 UIView 是否保留了更多。第二个答案在解释所有细节方面更好!
    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多