【问题标题】:Multiple setting of UserDefaults resulting in slower displayUserDefaults 的多重设置导致显示速度变慢
【发布时间】:2017-09-16 05:02:04
【问题描述】:

我有一个相当广泛的应用程序,我在其中存储了大量数据。 CLLocation,数组,CGPoints 等等。有时需要在设备上保存所有这些变量,所以我使用 UserDefaults。然而,在切换 ViewControllers 并简单地使用应用程序(不断更改数据 => 不断保存它)之后,我到达了一切运行缓慢的地步。

现在,假设我有或多或少的三个二维数组,假设我想将 5 个 Int 保存到 UserDefaults。

每次我更改其中一个变量时,我都会通过相同的命令“更新”它:

UserDefaults.standard.set(data, forKey: "UDdata"). 

因此,每次我想要更改数据时,我都会通过特定的评论对其进行更改。我想每次我这样做时,我都应该以某种方式摆脱键 UDdata 的先前数据,然后使用相同的键字符串设置它?有关该事项的信息将很有用。提前致谢

【问题讨论】:

  • UserDefaults 不是存储应用数据的合适位置。它适用于偏好等小值。
  • 虽然@rmaddy 肯定是对的,但我不认为在这里滥用 UserDefaults 是您的问题。至少我从来没有经历过放慢速度;)无论如何,我更倾向于这是一般的内存泄漏
  • 我强烈建议使用 Instruments.app 中的“时间配置文件”工具直接调查您的问题。

标签: swift performance memory nsuserdefaults


【解决方案1】:

原因是您滥用了 Userdefaults。它们将存储诸如标志之类的小值,以检测首次启动、偏好等。与其将数据存储在 Userdefaults 中,不如尝试使用 CoreData 或 SQLite。这也更容易使用。

核心数据: https://www.raywenderlich.com/145809/getting-started-core-data-tutorial

SQLite: https://www.raywenderlich.com/123579/sqlite-tutorial-swift

【讨论】:

  • 我也面临同样的问题,而且我没有使用大量数据。只有一个 12 位的字符串标识符。有时,(尤其是重新安装后)设置操作需要很长时间才能完成。此外,奇怪的是,它主要发生在重新安装后,因为重新安装(删除并安装)应该会删除所有以前的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多