2011-11-29 74 views
1

是否存在与我在表格视图中显示的列表中的项目数量有关的内存问题?如果用户不断添加项目,应用程序最终会崩溃还是由于内存问题?内存限制为表格视图中的项目数量

+0

小的评论...它不是一个Objective-C表视图。 Objective-C只是苹果为他们的工作选择的语言(部分原因是NeXT选择了它)。它是一个NSTableView,它是NeXTStep框架的一部分。 (我认为)。 – Almo

+0

我的不好,我对开发很陌生,我修正了它 – user1051935

+3

@Almo在iOS中,它是一个UITableView,它是UIKit框架的一部分,但同样的区别。 – 2011-11-29 22:39:13

回答

1

回答您的问题:

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

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

  3. 你的UITableViewDelegate有一个你可以实现的didSelectRowAtIndexPath方法。只要你的视图控制器容纳UITableView被设置为委托,它将响应didSelectRowAtIndexPath。

  4. 只是一句你使用的(请记住:你的numberOfRowsInSection数据源的方法必须使用数组数)数据源的阵列,并调用reloadData上的UITableView

编辑:问题所以只有从上面4​​点的第1点适用于这个问题:)其他人很高兴知道虽然

0

没有表特定的,但是,你会用完。

最重要的可能是在tableView:cellForRowAtIndexPath:委托方法中使用dequeueReusableCellWithIdentifier:。这基本上将内存使用量减少到可见单元的数量(加上一个滚动到视图中)。