关于tableview一个场景的疑问

有一个tablview列表, 打算显示类似通讯录的联系人列表, 右边是A-Z的导航, 可能数据量太大。假如一次从api返回10000个信息, 我的疑问是, 一次初始化10000个cell, 可行吗? 因为数据太多了, 本来想分页读取, 但是这种显示方式, 用分页不太合适。 或者有什么思路?

首先系统tableView的cell是有重用机制的,按照标准的套路写出来也不是一次性初始化10000个cell,如果cell都是一样的布局等等,只是内容不一致,只会存在你屏幕显示范围中的这几个cell

可以做本地数据试试

服务器端要做改造,每次请求加载30-40条左右的数据。
在前端的tableview,通过下拉加载的方式,每次加载若干条数据。

看一下第19、20题吧:http://www.henishuo.com/ios-interview-middle-two/

一次那么多条数据肯定是不行的。因为tableview是继承于scrollview的,而这个是需要计算通过得到contentsize的,所以有多少条数据作为数据源,就会计算多少次行高,那么就会很卡,或者说第一次出现需要等待好久。

建议:第一次只加载少量数据,比如10条、20条。然后将高度缓存下来,那么即使有10000条,当高度都缓存过了以后,也不会出现卡(富文本特别多的除外)。

看下文章中的如何自动计算并缓存行高吧!

按照tableviewcell的重用机制 这个貌似不用考虑啊? 跑下试试占多少内存…

cell 重用机制下不需要考虑这个问题的

发表评论

电子邮件地址不会被公开。 必填项已用*标注