首页 > 解决方案 > 在 Swift 中访问 c​​ellForRow(at:IndexPath) 中的 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
  }
}

或者我应该保存 in 的值并UserDefaultsviewWillAppear其中使用它cellForRow

请帮助我理解这两种选择的记忆含义。

标签: iosswiftnsuserdefaults

解决方案


根据苹果

在运行时,您可以使用 UserDefaults 对象从用户的默认数据库中读取您的应用使用的默认值。UserDefaults 缓存信息以避免每次需要默认值时都必须打开用户的默认数据库。

您应该“可以”检索 cellForRow 中的信息,因为它可能位于内存中的字典中(假设),由您提供的键获取,但是就 vadian 而言,您可以将其放入模型或属性中并消除假设。

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


推荐阅读