足以从超级视图中删除视图?

Posted

技术标签:

【中文标题】足以从超级视图中删除视图?【英文标题】:Enough to remove a view from superview? 【发布时间】:2016-09-13 18:42:16 【问题描述】:

我正在查看一个带有动画的视图。单击按钮时,视图会像这样添加:

self.view.addSubview(view)

当我想让视图消失时,我只需运行:

self.view.viewWithTag(tag).removeFromSuperview()

我的问题是,当视图被删除时,它会被释放吗?我觉得,但仅在模拟器中,我的其他 UI 操作更慢且有点滞后。我怀疑动画还在被移除的视图中运行?

【问题讨论】:

addSublayers ?你是说addSubview 吗? 是的,抱歉 ;o) 已更正,感谢提醒。 【参考方案1】:

如果它是实例变量,那么如果它有任何引用或者它是强的,它将不会被释放。它已从 superview 中删除,但存在于内存中,直到类存在。如果您将其声明为本地并将其初始化,那么我认为它将被释放!

【讨论】:

你可以设置yourview = nil!!!!!!!!!如果你使用arc,那么你不需要手动释放任何东西。否则在过去 non arc 项目中有方法 release 当不再有对该对象的强引用时,该对象将被释放。就是这样。如果 ivar 很弱并且没有其他引用,您可以使用实例变量并将其释放。 是的,如果没有强引用,那么它将被释放,但如果它没有引用! 这无济于事,弱也无济于事。如果我在删除之前停止视图中的动画,之后它会运行良好。

以上是关于足以从超级视图中删除视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从超级视图中删除视图?

从超级视图中删除当前视图

从超级视图中删除视图时出错

Swift 从超级视图中删除子视图

微调器不想从超级视图中删除

从单元格中的超级视图中删除视图