【问题标题】: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)
  • 已更正,感谢提醒。

标签: ios swift uiview


【解决方案1】:

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

【讨论】:

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