作为一名新开发者,我有点不确定我们应该在iOS上使用Swift后清理多少。有很多不同的信息,因为自iOS开始以来这一点也发生了很大变化。
因此,当我们拥有静态视图并使用故事板时,我认为所有内容都是为我们清理的,而且我们不必做(几乎)任何事情。
但是,当我根据用户点击动态创建视图时呢?如果有必要,清除参考文献的最佳方法是什么?
现在我做的就像我在Android中做的那样只是在创建一个View等新实例之前设置我对nil的全局引用。我已经读过这个应该这样做:
myView?.removeFromSuperview()
答案 0 :(得分:1)
即使您动态创建视图,也不必调用removeFromSuperview
,因为视图对其超级视图的引用很弱。
有关详细信息,请参阅this topic。
答案 1 :(得分:1)
尽管Swift使用的自动引用计数方法与Java的垃圾收集方法有很大不同,但程序员的感觉却非常相似。一方面,你必须意识到在Swift中创建循环引用的可能性,并插入弱引用以避免循环。另一方面,您可以依赖于在发布最后一个引用后立即释放资源,并使用deinit
方法来处理清理。
但是当我动态创建视图时呢?
动态创建视图并将其添加到Cocoa的视图层次结构可确保在视图层次结构决定不再需要视图时发布视图。
在Cocoa回收视图的情况下,您必须小心谨慎,例如:向表视图单元格或集合视图单元格添加视图时。由于单元格是循环使用的,因此您需要(1)删除添加的视图以避免再次添加它们,或者(2)检查视图是否已添加,并重用已存在的视图。
在回收单元格时删除已添加视图的一种方法是实现prepareForReuse
方法,并在那里删除添加的视图。