我需要在Objective-C和Swift中关闭Realm数据库吗?

8
Realm类的Java文档中有一个close方法。在方法细节中写道:“重要的是始终记住在完成后关闭Realm实例,以避免内存泄漏、文件描述符或使Realm文件大小超出限制。”但是Objective-C RLMRealm类Swift Realm类的文档都没有类似的内容。所以在Objective-C和Swift中需要关闭Realm数据库吗?为什么这些平台之间存在差异?

我对你的问题没有一个直接的答案,但我猜想这个差异来自于不同操作系统处理应用程序生命周期的方式。 - tomahh
2个回答

7

你不需要担心关闭数据库。

如果Realm没有提供close方法,则关闭由Realm自身处理。正如你已经提到的,不同平台/操作系统之间存在差异。


3
由于不同的内存管理方案,导致了这种差异。Objective-C 和 Swift 是基于引用计数的,而Dalvik和ART上的Java则使用标记-清除垃圾收集器。这意味着,在obj-c和swift中,对象在最后一个引用释放时(或自动释放池被清空时)立即被释放,而在Java中,如果应用程序没有内存压力,对象可能会任意停留很长时间。因此,Java对象不能可靠地依赖自动内存管理来清理非内存资源,但Objective-C和Swift对象有时可以。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接