プロトコルで宣言されたセルのタイトルと説明を提供する 2 つのメソッドがあります。
@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 を使用しています。