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

accessing NSUserDefaults within cellForRow(at:IndexPath) in Swift, memory usage

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

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

或者我应该将 UserDefaults 中的值保存在 viewWillAppear 中并在 cellForRow 中使用它吗?

请帮助我理解这两个选项对内存的影响。

根据 Apple

At runtime, you use UserDefaults objects to read the defaults that your app uses from a user’s defaults database. UserDefaults caches the information to avoid having to open the user’s defaults database each time you need a default value.

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

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