ios - 在 Swift 中访问 cellForRow(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 的值并UserDefaults
在viewWillAppear
其中使用它cellForRow
?
请帮助我理解这两种选择的记忆含义。
解决方案
根据苹果
在运行时,您可以使用 UserDefaults 对象从用户的默认数据库中读取您的应用使用的默认值。UserDefaults 缓存信息以避免每次需要默认值时都必须打开用户的默认数据库。
您应该“可以”检索 cellForRow 中的信息,因为它可能位于内存中的字典中(假设),由您提供的键获取,但是就 vadian 而言,您可以将其放入模型或属性中并消除假设。
此外,请考虑该数据是否会被另一个进程更改,以及是否需要观察 UserDefaults 键。
推荐阅读
- python - 每月安排任务 Python
- oracle - Oracle PL/SQL 过程/函数用列创建视图
- windows - 批处理文件:如何将所有 .doc 文件备份到文件夹
- ios - 如何从 Cordova Webview ios 访问 phone-gap-media-stream
- php - Laravel 找不到第二个驱动程序
- jquery - AJAX 不调用 WebMethod ASP.net
- javascript - 在 td 的中心对齐图像
- reactjs - reactJS历史确实推动但导航栏确实改变了
- javascript - 在 jsfiddle.net 上运行的代码在本地无法运行
- oracle - 无法访问 oracle 数据库中的文件(不允许或文件错误)