关键词不能为空

当前您在: 主页 > 英语 >

TableView重用机制及常见问题

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-02 11:14
tags:

-

2021年2月2日发(作者:bathe是什么意思)


TableView


重用机制及常见问题










要:< /p>


IOS


是运行在苹果移动设备上的操作系统,


对内存的控制比较严格。


Tableview

< p>
是在


IOS


开发过程中使


用的最为广泛的控件之一,常用来以列表的方式显示资料。


为了解决内存消耗问题,


TableView


重用机制发挥着重要的


作用。本文对


TableView


重用机制进行了详细介绍,并 指出


了开发过程中常见的问题。针对这个问题,本文给出了两种


解决方案,


并通过内存消耗和


CPU


占 有率这这个指标进行对


比,得出了第二种方案的更为有效的结论。






关 键词:


TableView


重用机制;内存消耗;解决方案






IOS


是由苹果公司为


iphone

< p>
开发的操作系统。


它主要是


iphone



iPod touch


以及

< br>iPad


使用。


就像


Mac OS X


操作系统


一样,


它也是以


Darwin


为基础的。


最新版的


IOS


系统



IOS8



中,系统操作占用大概


1.1G


的内存空间


.


后续的系统预计将

< p>
占用更多的内存。另外,


IOS


设备提供给每个应 用软件使用


的内存是有限的


[1]


。因 此,


IOS


对开发者进行内存管理的要


求很严格,对于易于崩溃、有内存泄露、以及内存占用量过


大的程序,都不能通过苹果公 司的审核。因此,


IOS


应用软


件的开 发过程中,内存控制需要时刻注意。






1 TableView


的简介






TableView



APP


开发中使用率最高的一个常用控件,


基本上每个


view


都会见到它的身影。


TableView


功能很强大,


除了一般 的表格资料展示之外,设置的属性资料往往也用到


TableView

< br>。


无论是


IOS


设备自带的通讯 录、


备忘录、


提醒事


项等应用软件,还 是第三方的微信、微博、陌陌等社交软件


[2]


,都使用了这个 视图。


TableView


继承自


Sc rollView


,可


以表现为


Pla in



Grouped


两种风格:


Plain


样式指的是普通


的列表风格,< /p>


是方形的外观;


Grouped


样式指的 是分块风格,


主要以圆角形显示。







Tab leView


中的一行称为


TableViewCell


,而许多的


TableViewCell


组成 了一个


TableSection


,每个


TableSection


上下又分


?e


Header



Footer< /p>



许多个的


Table Section


则组


成了整个


Table

< p>


Table


也有


Hea der



Footer



TableViewCell



TableView


基本组成单元。






2 TableView


的重用机制







IOS


的一些视图中,它们的内部包含子视图,当父视


图显示区域发生 变化时,比如用手滑动屏幕,原来在屏幕中


的子视图就会滑出到屏幕之外,而原来在屏幕 之外的子视图


就有机会进入屏幕中


[4]


。就如上文所述


TableView


常用于资


料的显示,如果一个


TableView


有几百个


TableViewCell


,根


据数据个 数创建相应数量


TableViewCell



会占用很大的内存


空间


[3]


。如果在


TableViewCell


里面含有


image


之类的很占


内存的资源,这就会造成应用程 序在使用


TableView


加载大


批 量数据时内存占用过大,那这样很容易出现内存警告甚至


崩溃掉,这不是我们想要看到的 。因此,


TableView


提供了


单 元格重用机制来达到节省内存的目的:通过为每个单元格


指定一个重用标识符

< p>


reuseIdentifier


< p>


即指定了单元格的种


类;当单元格滚出屏幕时, 允许恢复单元格以便重用。


TableView


自我管理的重用 方法


dequeueReusableCellWithIdentifier



这个方法列一个已经存在


的单元格,


假如没有可以重用的单元格那么就返回


nil



合理


的使用重用机制会对程序的内存使用和优化都有很重要的< /p>


作用。






查看


TableView

< p>
头文件,会找


NSMutableArray


* visiableCells



NSMutableDictn ery *reusableTableCells


两个


结构。


visiableCells


内保存当前显示的


cells



reusableTableCells


保存可重用的


cells


< p>
TableView


显示之初,


reusable TableCells


为空,那么


tableView deq ueueReusableCellWithIdentifier


< br>CellIdentifier


返回


nil



开始的


cell


都是通过


[[UITableViewCell


alloc] ini tWithStyle



UITableViewCellSt yleDefault


reuseIdentifier


:< /p>


CellIdentifier]


来创建,而且

< br>cellForRowAtIndexPath


只是调用最大显示


cell


数的次数。






比如:有


100


条数据,


iphone


一屏最多 显示


10



cell

< br>。


程序最开始显示


TableView

< br>的情况是:






⑴用


[[UITableViewCell alloc] i nitWithStyle



UITableViewCell StyleDefault reuseIdentifier



CellIdentifier]




10



cell


,并给


cell


指定同样的重用标识(当然,可以为


不同显 示类型的


cell


指定不同的标识)


。 并且


10



cell

< br>全部


都加入到


visiableCells


的队列,


reusableTableCells


为 空。






⑵向上拖动


tableView




cell1


完全移出屏幕,


并且


cell11


完全显示出来的时候。

< p>
cell11


加入到


visiableCells



cell1


移出

visiableCells



cell1


加入到


reusableTableCells







⑶接着向上拖动


tableView



因为


reusableTableCells


中 已


经有值,


所以,


当需要显示新的


cell



cellForRowAtIn dexPath


再次被调用的时候,


tableView


dequeueReusableCellWithIdentifier

< br>:


CellIdentifier


返回


cell1



cell1


加入到


visiableCells



cell1


移出


reusableTabl eCells



cell2


移出


visiableCells



cell2< /p>


加入到


reusableTableCells

< br>。


之后再需


要显示的


Cell< /p>


就可以正常重用了。


合理的使用重用机制会对

程序的内存使用和优化都有很重要的作用。







3


视图


重叠的问题







TableViewCell


中加入


Tex tField


或者


TextView


等 子视


图,


便可以在


cell

< p>
上进行文字编辑。


但对于多变的自定义


cell< /p>



如当一个


cell

含有一个


UITextField


的子类并被放在重用队列


中以待重用,这时如果一个未包含任何子视图的


cell


要显示


在屏幕上,就会取出并使用这个重用的


cell


显示在无任何子


视图的


cel l


中,这个时候就会出现问题。



-


-


-


-


-


-


-


-



本文更新与2021-02-02 11:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/599290.html

TableView重用机制及常见问题的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文