tableview重用机制及常见问题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TableView 重用机制及常见问题 摘 要: IOS 是运行在苹果移动设备上的操作系统, 它 对内存的控制比较严格。 Tableview 是在 IOS 开发过程中使 用的最为广泛的控件之一,常用来以列表的方式显示资料。 为了解决内存消耗问题, TableView 重用机制发挥着重要的 作用。本文对 TableView 重用机制进行了详细介绍,并指出 了开发过程中常见的问题。针对这个问题,本文给出了两种 解决方案,并通过内存消耗和 CPU 占有率这这个指标进行对 比,得出了第二种方案的更为有效的结论。 关键词: TableView 重用机制;内存消耗;解决方案 IOS 是由苹果公司为 iphone 开发的操作系统。 它主要是 iphone、iPod touch以及iPad使用。就像 Mac OS X操作系统 一样,它也是以 Darwin 为基础的。 最新版的 IOS 系统( IOS8) 中,系统操作占用大概 1.1G 的内存空间 .后续的系统预计将 占用更多的内存。另外, IOS 设备提供给每个应用软件使用 的内存是有限的 [1] 。因此, IOS 对开发者进行内存管理的要 求很严格,对于易于崩溃、有内存泄露、以及内存占用量过 大的程序,都不能通过苹果公司的审核。因此, IOS 应用软 件的开发过程中,内存控制需要时刻注意。 1 TableView 的简介 TableView 是 APP 开发中使用率最高的一个常用控件, 基本上每个 view 都会见到它的身影。 TableView 功能很强大, 除了一般的表格资料展示之外,设置的属性资料往往也用到 TableView 。无论是 IOS 设备自带的通讯录、 备忘录、 提醒事 项等应用软件,还是第三方的微信、微博、陌陌等社交软件 [2] ,都使用了这个视图。 TableView 继承自 ScrollView ,可 以表现为 Plain 和 Grouped 两种风格: Plain 样式指的是普通 的列表风格, 是方形的外观; Grouped 样式指的是分块风格, 主要以圆角形显示。 在 TableView 中的一行称为 TableViewCell ,而许多的 TableViewCell 组成了一个 TableSection,每个 TableSection 上下又分 ?e 有 Header 和 Footer ,许多个的 Table Section 则组 成了整个 Table , Table 也有 Header 和 Footer。TableViewCell 是 TableView 基本组成单元。 2 TableView 的重用机制 在 IOS 的一些视图中,它们的内部包含子视图,当父视 图显示区域发生变化时,比如用手滑动屏幕,原来在屏幕中 的子视图就会滑出到屏幕之外,而原来在屏幕之外的子视图 就有机会进入屏幕中 [4] 。就如上文所述 TableView 常用于资 料的显示,如果一个 TableView 有几百个 TableViewCell ,根 据数据个数创建相应数量 TableViewCell ,会占用很大的内存 空间 [3] 。如果在 TableViewCell 里面含有 image 之类的很占 内存的资源,这就会造成应用程序在使用 TableView 加载大 批量数据时内存占用过大,那这样很容易出现内存警告甚至 崩溃掉,这不是我们想要看到的。因此, TableView 提供了 单元格重用机制来达到节省内存的目的:通过为每个单元格 指定一个重用标识符 ( reuseIdentifier ),即指定了单元格的种 类;当单元格滚出屏幕时,允许恢复单元格以便重用。 TableView 自我管理的重用方法 dequeueReusableCellWithIdentifier ,这个方法列一个已经存在 的单元格, 假如没有可以重用的单元格那么就返回 nil 。合理 的使用重用机制会对程序的内存使用和优化都有很重要的 作用。 查看 TableView 头文件,会找 NSMutableArray *visiableCells 和 NSMutableDictnery *reusableTableCells 两个 结构。visiableCells 内保存当前显示的 cells, reusableTableCells 保存可重用的 cells。 TableView 显示之初, reusableTableCells 为空,那么 tableView dequeueReusableCellWithIdentifier : CellIdentifier 返回 nil 。开始的 cell 都是通过 [[UITableViewCell alloc] initWithStyle :UITableViewCellS

文档评论(0)

dajiefude2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档