这个框架是sunny大神写的有关tableViewCell的高度轻量级框架地址.
我对这个框架的源码进行下分析,其中有些思想,还是值得我去学习和借鉴的。
涉及到UITableViewCell的优化,其中一个重要的点,就是要对cell高度进行缓存。这里提供了通过indexPath和特殊区分key来作为缓存的标识,两种缓存的思路差不多。
其中用到了runtime的Method swizzling来交换UITableView里面的relaod data等方法,所以方法的实现主要是利用了类别。
而有关于类别里面涉及到成员变量的添加,以及成员变量的初始化,其实可以值得我们借鉴
其实在一个成功的框架里面,一般最不可缺少的就是缓存,当然有些需要内存缓存和硬盘缓存,这里我们用二维数组进行缓存,
两种缓存方式的实现基本相同,我就抽一个进行说明。
接下来是UITableView+FDTemplateLayoutCell的实现,这里面也有我们学习的一点,有两种方式key和indexPath来进行缓存,- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByIndexPath:(NSIndexPath *)indexPath configuration:(void (^)(id cell))configuration 和- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByKey:(id<NSCopying>)key configuration:(void (^)(id cell))configuration最后统一走的- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier configuration:(void (^)(id cell))configuration.这点很好。
UITableView+FDTemplateLayoutCellDebug是用来打印日志的。