【发布时间】:2014-11-21 04:22:17
【问题描述】:
我正在以编程方式创建所有显示对象并将它们添加到我的故事板场景子视图中。
例如:
let button: UIButton = UIButton( frame: CGRect( x: 0, y: 0, width: 160, height: 50 ) )
self.view.addSubview( button )
在更改情节提要场景时,我遇到了巨大的内存泄漏(每次场景更改之间的内存使用量几乎翻了一番),这当然表明这些对象在更改场景时并没有被自动删除。我已经阅读了一些关于 Swift 垃圾收集的内容,但没有找到关于这个特定用例的太多信息。
通过更改情节提要场景,我的意思是通过当前视图控制器,如下所示:
self.presentViewController( targetController, animated: true, completion: nil )
话虽如此,我的问题是:
1) 可以像这样移除对象:
button.removeFromSubview()
button = nil
正确吗?
2) 有没有办法在循环中删除插入到视图子视图中的任何对象,并将其分配给 nil 以完全删除与该对象关联的任何引用?我可以一个一个地删除它们,但这是一项艰巨的任务。
3) 有没有办法在改变场景后自动从内存中删除对象?这将是最好的解决方案。
非常感谢您提供解决方案的示例。
提前致谢。
【问题讨论】:
-
你在哪里添加子视图?视图加载?出现了吗?初始化?
-
在 viewDidLoad 中。谢谢
标签: memory swift storyboard