objective-c - TableView 中项目数的内存限制

标签 objective-c ios cocoa-touch uitableview

我在表格 View 中显示的列表中的项目数量是否存在内存问题?如果用户不断添加项目,应用程序最终会不会因内存问题而崩溃?

最佳答案

回答您的问题:

  1. 对此没有非黑即白的答案。为了尽力解释,将 UITableView 想象成一种可视化数据数组。事实上,大多数人(包括我自己)使用像 NSArray 或 NSDictionary 这样的源数据对象来为 UITableView 提供显示数据。适用于这些对象(数组和字典)的所有内存限制都适用于您的 UITableView,假设您的 UITableView 设置正确并且您正在使用推荐的重用单元格技术。这归结为:是否可以拥有一个非常大的 UITableView? - 是的。不过,这我不知道要多久。我创建了具有复杂子类单元格和 200 行的 UITableViews,它们运行良好。这取决于您如何设置表和您使用的数据源。再次记住,限制是由于数据源造成的。拥有一个非常大的阵列,最终您的设备将抛出内存警告。作为最佳实践,请使用分页。在 UITableViews 上启用分页有大量在线教程。如果正在下载图像,请延迟加载图像(如果有)。

  2. 是的,你可以。如果您在子类化 UITableViewCells 时足够有创意,您可以做很多令人惊奇的事情。否则,您也可以使用标准的 UITableViewCell。那里有两个标签:textLabel 和 detailTextLabel。使用这两个来显示你想要的数据。

  3. 您的 UITableViewDelegate 有一个您可以实现的 didSelectRowAtIndexPath 方法。只要将包含 UITableView 的 View Controller 设置为其委托(delegate),它就会响应 didSelectRowAtIndexPath。

  4. 只需清空您用作数据源的数组(请记住,您的 numberOfRowsInSection 数据源方法必须使用数组计数)并在 UITableView 上调用 reloadData

编辑:问题已被编辑,因此上述 4 点中只有第 1 点适用于该问题 :) 其他人很高兴知道

关于objective-c - TableView 中项目数的内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318664/

相关文章:

ios - 警告 : Method override for designated initializer

objective-c - 在 UITabBar 应用程序中旋转一个 UIViewController

iphone - StatusBar 全屏 View 关闭错误

android - 边框在 Android 4+ 和 iOS 6.0 上不以 border-radius flex

objective-c - 关于 objective-C 和 cocoa/cocoa-touch 的实现的良好知识/信息来源是什么?

iphone - Objective C 在自动释放对象上泄漏内存

objective-c - 何时使用 size_t 与 uint32_t?

iphone - 一个 UITableView 中的多个 UITableViewCell 类?

objective-c - 使用 NSDictionary,您可以确定值的数据类型吗?

iPhone 联系人应用程序的 "Contact View/Edit View"XCODE