iOS REST 应用内存优化
iOS REST App memory optimization
我正在尝试制作一个典型的无限滚动移动应用程序,该应用程序通过 REST API 从服务器获取数据并使用该数据填充 table 视图。当用户到达底部单元格时,将加载新的数据部分,因此内存使用量会随着时间的推移而增加。
在这种情况下,内存消耗值得担心吗?应用程序 运行 可以这样内存不足吗?如果是这样,在此类应用程序(Twitter、Facebook 应用程序等)中处理内存管理的常用方法是什么?
也许我应该卸载最近加载的数据或类似的东西?
感谢任何 hints/articles/sample 个项目。
在典型的 iOS 应用程序中,内存主要由 UIKit 和图像消耗。你可以用 Xcode 仪器来证明这一点。
所以我假设这是你的情况。
您提到您正在使用 UITableView
。它经过精心设计,可以节省内存并提高滚动性能。但这需要您重复使用该单元格。您可以检查 UITableView
的 dequeueReusableCellWithIdentifier:
。详情请参考iOS Developer Library
如果您重复使用单元格,UITableView
将在整个生命周期中只分配几个 UITableViewCell
。滚动时,它会自动重新使用可见区域之外的 UITableViewCell
。这样内存使用量应该几乎不变。
关于图像,您必须使用缓存(或对象池)以限制内存使用并保持滚动性能不受影响。
我正在尝试制作一个典型的无限滚动移动应用程序,该应用程序通过 REST API 从服务器获取数据并使用该数据填充 table 视图。当用户到达底部单元格时,将加载新的数据部分,因此内存使用量会随着时间的推移而增加。
在这种情况下,内存消耗值得担心吗?应用程序 运行 可以这样内存不足吗?如果是这样,在此类应用程序(Twitter、Facebook 应用程序等)中处理内存管理的常用方法是什么?
也许我应该卸载最近加载的数据或类似的东西?
感谢任何 hints/articles/sample 个项目。
在典型的 iOS 应用程序中,内存主要由 UIKit 和图像消耗。你可以用 Xcode 仪器来证明这一点。
所以我假设这是你的情况。
您提到您正在使用 UITableView
。它经过精心设计,可以节省内存并提高滚动性能。但这需要您重复使用该单元格。您可以检查 UITableView
的 dequeueReusableCellWithIdentifier:
。详情请参考iOS Developer Library
如果您重复使用单元格,UITableView
将在整个生命周期中只分配几个 UITableViewCell
。滚动时,它会自动重新使用可见区域之外的 UITableViewCell
。这样内存使用量应该几乎不变。
关于图像,您必须使用缓存(或对象池)以限制内存使用并保持滚动性能不受影响。