关于cell重用的小计

前言

对于tableView 的cell的重复用代码看似已经很熟悉,但是在上周五和请教池神的时候发下由于比较粗心已经一些习惯性的写法,不走心的写法,以至于发现以前代码中好多的错误,今写此博客进行一下记录,但仍有一些细节没有研究清楚,以后会继续进行更新

初识tableView时的写法

在初学tableView的时候,似乎并未注意到以上两个方法,我们在tableView取cell的代理方法中通常是这样写的
cell代理1
先根据重用标识reuseId在重用池中取cell,由于在控制器第一此加载的时候,重用池中没有可以重用的cell,所以需要手动创建,注意创建cell的方法 -(instancetype)initWithStyle:(UITableViewStyle)style,再次创建并初始化cell的时候,要赋值可重标识和cell的type,以便于下次重用。而且在自定义cell的时候,也可以重写此方法,做一些特殊的处理。

从registerNib:forCellReuseIdentifier

在tableView取cell的代理方法中,从重用池中取cell还有另外一个方法 dequeueReusableCellWithIdentifier:forIndexPath:此方法的使用的时候注意,必须要对cell进行注册,注册可以通过xib或者Class,具体方法为
 - registerNib:forCellReuseIdentifier  ---使用xib进行注册
 - registerClass:forCellReuseIdentifier: --- 使用具体的类进行注册,此类为cell的类型
方法的优势注意,在使用tableView取cell的代理方法中可以不对cell进行判空操作,如果缓冲池没有,会自动创建一个新的cell,是代理方法可以更加简洁,内部值需要调用dequeueReusableCellWithIdentifier:forIndexPath:即可
代理方法2

注册方法

注意

目前就效率来讲,采用传统的方法效率更好,但是就代码风格来讲,后者更由于前者,后面的方法是苹果新增的方法,就一贯尿性来讲,苹果以后肯定对此方法进行优化,所以建议使用后面的方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容