一个模型对应一个cell的高度,所以把cell的高度变为模型的属性,这样的解决更彻底,一个模型对应一个自己的属性
把一个对象跟一个东西关联起来,设计一对一的思路:
1.字典,可以变成key和value的关系
2.用模型属性,可以变成对象和属性的关系
把高度写为模型类的属性,然后在.h中重写get方法,由于有了属性就有了成员变量,所以先判断是否为0,如果不为0,代表存在,已经计算过,直接if(_cellHeight) return ,如果为0,则累加,累加,累加,返回,这样就封装到了模型类内部
把模型对应的cell高度缓存到成员变量中去
在heightForRow方法中,根据行号从模型数组中获取到模型后,直接返回模型对象的高度
模型数据决定高度,模型数据多,高度就高,所以简而言之,模型决定高度,取出模型对应的高度合情合理
默认从数组内部取出来的是id类型,id类型的东西是不能用点语法的
所以这样直接写是错的 self.topics[indexPath.row].cellHeight,这里用到了泛型,如果定义数组属性的时候,如果不定义泛型,它里面的元素类型就是泛型,里面什么都可以装,所以这样写:@property(nonatomic,strong)NSMutableArray<Topic *> *topic,这样写了之后就可以用点语法了