我有这两种方法为单元格提供标题和描述,在协议中声明。
@protocol TableCellProtocol <NSObject>
@optional
@property(readonly,nonatomic,strong) NSString *titleForCell;
@property(readonly,nonatomic,strong) NSString *descriptionForCell;
@end
我有一个 NSManagedObject 实现该协议并提供相关方法:
-(NSString*)titleForCell {
return [NSString stringWithFormat:@"%@ - %@",self.myVar1,self.myVar2];
}
-(NSString*)descriptionForCell {
return [NSString stringWithFormat:@"%@ - %@",self.myVar3,self.myVar4];
}
self.myVar<n>
CoreData 属性在哪里。
此协议旨在用于 UITableViewCell:
- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
id<TableCellProtocol> obj = [_fetchedResultsController objectAtIndexPath:indexPath];
MyTableViewCell *cell = [table dequeueReusableCellWithIdentifier:@"tableCell"];
cell.cellTitle.text=obj.titleForCell;
cell.cellDescr.text=obj.descriptionForCell;
return cell;
}
虽然我没有内存泄漏或分配问题,但我发现这并不是很优雅,而且由于性能原因很差,因为每次显示单元格时都会创建一个新的 NSString。
此外,相关属性可能会在应用程序生命周期中发生变化,因此如果在某处存储标题和描述,我需要在需要时刷新它们。
我在我的项目中使用 ARC。