Objective C 块泛型

Objective C Block Generics

我正在尝试实现一个数据源,该数据源可用于为表格视图自定义几个不同的 类 单元格,但我在传递的块中遇到通用类型问题给构造函数。

这里是数据源头文件的实现:

@interface ABParseDatasource<__covariant ObjectType: UITableViewCell *> : NSObject <UITableViewDataSource>

- (instancetype)initWithCellIdentifier:(NSString *)identifier parseQuery:(PFQuery *)query tableView:(UITableView *)tableView customizeBlock:(void (^)(ObjectType))customBlock;

@end

这里是我尝试在构造函数中初始化块的地方:

self.parseDatasource = [[ABParseDatasource alloc] initWithCellIdentifier:identifier parseQuery:[ABOrder query] tableView:self.tableView customizeBlock:^(ABOrderItemTableViewCell *cell) {

}];

属性声明:

@property (nonatomic) ABParseDatasource<ABOrderItemTableViewCell *> *parseDatasource;

但是我在实例化数据源时遇到编译器错误:

有什么想法吗? (是的 ABOrderItemTableViewCell 确实继承自 UITableViewCell

创建 class 时必须指定泛型类型:

[[ABParseDatasource<ABOrderItemTableViewCell *> alloc] initWithCellIdentifier...