前言
对于tableView 的cell的重复用代码看似已经很熟悉,但是在上周五和请教池神的时候发下由于比较粗心已经一些习惯性的写法,不走心的写法,以至于发现以前代码中好多的错误,今写此博客进行一下记录,但仍有一些细节没有研究清楚,以后会继续进行更新
初识tableView时的写法
在初学tableView的时候,似乎并未注意到以上两个方法,我们在tableView取cell的代理方法中通常是这样写的
先根据重用标识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:即可
注意
目前就效率来讲,采用传统的方法效率更好,但是就代码风格来讲,后者更由于前者,后面的方法是苹果新增的方法,就一贯尿性来讲,苹果以后肯定对此方法进行优化,所以建议使用后面的方法