关键词不能为空

当前您在: 主页 > 英语 >

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重用机制及常见问题的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文