NSClassFromString - 不起作用

时间:2010-11-16 12:49:18

标签: iphone objective-c

我正在尝试在Obj-C中使用动态类型,我有以下代码和错误:

alt text

对我而言似乎很好,但它不想工作,有什么想法吗?

3 个答案:

答案 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"];