在Swift中访问cellForRow(at:IndexPath)中的NSUserDefaults,内存使用情况

时间:2018-10-02 16:37:02

标签: ios swift nsuserdefaults

NSUserDefaults方法中从cellForRow(at:IndexPath检索数据是否占用大量内存?代码如下所示:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let recentFavorite = UserDefaults.standard.string("recentlyStoredFavorite")
  if self.favorite == recentFavorite {
    cell.imgForFavorite = self.imgForFavorite
  }
}

还是应该将UserDefaultsviewWillAppear中的值保存在cellForRow中?

请帮助我了解这两种选择对内存的影响。

1 个答案:

答案 0 :(得分:2)

根据苹果公司

  

在运行时,您使用UserDefaults对象读取默认值,   您的应用使用的是用户默认数据库。 UserDefaults缓存   避免每次打开用户默认数据库的信息   时间需要默认值。

您应该可以在cellForRow中检索信息,因为它可能位于内存中的一个字典中(假设),由您提供的密钥获取,但是对于vadian来说,您可以将其放入模型或属性并消除假设。

此外,请考虑是否该数据将被另一个进程更改,以及是否需要观察UserDefaults键。