在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]

Posted

技术标签:

【中文标题】在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]【英文标题】:Memory performance of storing image as base64 in UserDefaults [closed] 【发布时间】:2018-02-08 12:59:15 【问题描述】:

我正在从服务器获取图像并将其显示在 App 的封面屏幕上。获取图像后,我将其作为 Base64 字符串存储在 UserDefaults 中。每次打开应用程序时,我都会再次将 base64 字符串转换为 Image 并将其显示为背景图像。通常图像大小为 png 格式的 1-2mb。但是,我不确定这是否会在内存方面出现问题(转换为 base64,反之亦然)。

1-) 每次打开 App 时将 base64 转换为图像是否会导致性能方面的任何问题(内存泄漏)?

2-) 有没有更好的方法来存储图像文件?

【问题讨论】:

为什么要转换为base 64?图像是数据。存储数据。完毕。 (我不会将它存储在用户默认值中,但这不是重点。) 【参考方案1】:

第 1 步:不要来回转换为 base64。正如马特所说,没有理由这样做。您的各种存储选项都支持二进制数据,因此请将其直接存储为二进制数据。 (Data,甚至,因为有一些方法可以将 Data 对象写入各种格式的文件。)

第 2 步:不要将大型对象存储在 UserDefaults 中。 UserDefaults 用于存储开关设置等小东西。而是使用 Documents 或 Caches 目录中的文件。

【讨论】:

以上是关于在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中将 Stepper 数据保存到 UserDefaults?

如何在 Userdefaults (SwiftUI) 中将新元素附加到数组

在 CloudKit 中将图像存储为 CKAsset,图像倒置

在 Swift 3.1 中将自己的对象数组添加到 UserDefaults 时出错

如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?

userdefaults 不保存按钮状态