swift如何处理确定性终结?

时间:2014-06-03 08:34:14

标签: garbage-collection finalizer swift

我来自C#背景;据我所知,Swift有像C#那样的自动内存管理。

C#中需要使用“编程模式”的问题是及时释放资源,因为垃圾收集器在未定义的时间运行,因此不能用于关闭文件,释放网络连接等。(因此IDisposable和“使用”关键字)

在Swift编程时如何处理?

2 个答案:

答案 0 :(得分:2)

Swift seems to use有相同的内存管理模型,例如Objective-C,启用了ARC

这意味着没有垃圾收集器。相反,当使用(强)引用时,ARC使用引用计数和编译器插入的递增和递减操作。

没有(线程)收集器意味着最终确定在Swift中是确定的。当最后一个引用超出范围时,对象将被释放。

答案 1 :(得分:0)

Swift启用ARC与Objective-C相同。您可以从Apple文档中找到参考资料。

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-XID_50

除了 NikolaiRuhe 提到的swift的默认处理外,您可以使用deinit()方法强制释放对象。如果您已实施任何内容,则可以使用此方法删除observers