ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IOS:个人笔记|UI_UITableView的优化

2020-10-23 09:02:15  阅读:221  来源: 互联网

标签:UITableViewCell 缓存 注册 创建 IOS cell UI UITableView id



1:在每行显示什么内容的方法里,即cellForRowAtIndexPath,每行都是重新创建了cell,数据量一多,极大的消耗了资源,当每次向上滑动,都是新建的cell,原来的cell被销毁。苹果已经做了部分优化,往下滚动,哪个cell出来了,才创建哪个cell。但是往上滚动,会重新创建新的cell,重复创建这个问题没有解决。这个可以打印下cell的内存地址来验证,我们看到没有cell的地址是相同的


优化思路:创建一个缓存池,用于存放cell对象。当上一个cell完全离开屏幕时,将其存入缓存池,同时刻下方出现的cell是新建的,因为缓存池没有可利用的cel。.如果再往下拉动,就会把上面之前缓存池的cell对象拿过来使用。以此达到循环利用的目的。
下面是cellForRowAtIndexPath里的方法

//定义一个重用表示
NSString *id=@"identifier";
//第一种:注册对应的cell类型
//[_tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:id];
//去缓存中取是否可循环利用的cell,A是标示,看有没有这个标示的cell
   UITableViewCell *cell= [_tableview dequeueReusableCellWithIdentifier:id];
    //第二种:如果缓存池没有,需要自己创建
    if(cell==nil)
    {
        cell=[[UITableViewCell alloc ]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"A"];
    }
    //设置数据
    cell.textLabel.text=[NSString stringWithFormat:@"第%ld行",indexPath.row];
    return cell;
注册cell类型,或者判断创建cell,两种方式用任何一种都可以。用注册的方式时,可以将该方法卸载viewdidload方法中(保证只注册一次),同时把标识声明为全局变量。上面的id表示也可以声明静态,这样不用每次cell出来时创建.
用注册的方式,设置不了自身的一些样式控件,注册一般多用于自定义cell时。

 

标签:UITableViewCell,缓存,注册,创建,IOS,cell,UI,UITableView,id
来源: https://www.cnblogs.com/kc1995/p/13862177.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有