作为一名新开发人员,我有点不确定在 iOS 上使用 Swift 后我们应该清理多少内容。有很多不同的信息,因为自 iOS 诞生以来,这也发生了很大的变化。
因此,当我们拥有静态 View 并使用 Storyboard时,我觉得一切都已为我们清理干净,我们(几乎)不需要做任何事情。
但是当我根据用户点击动态创建 View 时会怎样呢?如果有必要,清除引用的最佳方法是什么?
现在,我就像在 Android 中一样,只需在创建 View 等的新实例之前将全局引用设置为 nil。我读过应该这样做:
myView?.removeFromSuperview()
最佳答案
尽管 Swift 使用的自动引用计数方法与 Java 的垃圾收集方法有很大不同,但程序员的感觉却惊人地相似。一方面,你必须意识到在 Swift 中创建循环引用的可能性,并插入弱引用以避免循环。另一方面,您可以依靠在释放最后一个引用后立即释放资源,并使用 deinit
方法来处理清理工作。
But what about when I create my view dynamically
动态创建 View 并将它们添加到 Cocoa 的 View 层次结构中,可以确保当 View 层次结构决定不再需要它们时,您的 View 将被释放。
在 Cocoa 回收 View 的情况下,你必须小心,例如当您将 View 添加到 TableView 单元格或 Collection View 单元格时。由于单元格被回收,您需要 (1) 删除添加的 View 以避免再次添加它们,或者 (2) 检查 View 是否已添加,并重用已有的 View 。
回收单元格时删除添加的 View 的一种方法是实现 prepareForReuse
方法,并删除其中添加的 View 。
关于ios - 对于 iOS 版 Swift,我们应该做多少清理工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810217/