我正在尝试在Obj-C中使用动态类型,我有以下代码和错误:
对我而言似乎很好,但它不想工作,有什么想法吗?
答案 0 :(得分:3)
因为您在运行时创建了cellClass,所以编译器不知道它,因此它无法编译该代码。
这样可行:
Class cellClass = NSClassFromString(@"CustomCell");
UITableViewCell *cell; // You could just id here as well if you wanted but you now that CustomCell is definitely a type of UITableViewCell
cell = [tableView dequeueReusableCellWithIdentifier:@"rssItemCell"];
但是,你为什么不这样做?
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"rssItemCell"];
答案 1 :(得分:1)
由于您实际上并未创建新实例(只检索一个实例),因此不需要这样做。这就足够了:
// If we don't know the exact class of the cell, type it with the common superclass of all cells
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"rssItemCell"];
答案 2 :(得分:0)
您不能将变量cellClass用作类型,它是一个对象。
在这种情况下,您必须使用id对象或UITableViewCell。像这样:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"rssItemCell"];
或
id cell = [tableView dequeueReusableCellWithIdentifier:@"rssItemCell"];