问题:调用 dequeueReusableCellWithIdentifier: forIndexPath: 代码报carsh
原因:在cellForRowAtIndexPath 方法中,调用上述方法,之前没有注册class。
分析:
- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier; // Used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.
- (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); // newer dequeue method guarantees a cell is returned and resized properly, assuming identifier is registered
本质上是这两个方法的区别:
1、有indexpath的方法,在使用的时候,必须调用registerClass或者registerNib注册。
2、在cell获取的地方,有indexpath的方法无需判断是否为空。因为如果找不到cell,会自动调用initWithStyle:withReuseableCellIdentifier 创建新cell。而indexPath的作用就是,在返回cell之前,会调用tableview:heightForRowAtIndexPath来确定cell尺寸。