多个方法名为error。涉及多个班级

时间:2015-03-23 22:11:08

标签: ios objective-c uitableview 64-bit

代码的最后一行"返回[cell height]"给我一个错误"多个方法名为" height"发现结果不匹配,参数类型或属性"。此代码在32位上运行良好,但在64位(模拟器)上运行不正确。

请有人帮忙解决这个问题。还有其他帖子提到这一点,但他们只有一种类型可以类型化。我在数组self.cells

中有不同的类

我可以检查每个" cell"对于它的类类型,然后返回相应的高度,但这是一个繁琐的代码。有没有更好的方法呢?

非常感谢。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:  (NSIndexPath *)indexPath
{
    id cell = self.cells[indexPath.row];
    if ([cell isKindOfClass:[TripCell class]])
    {
        return 150;
    }
    return [cell height];
}

1 个答案:

答案 0 :(得分:2)

你的"手机"被声明为类型" id"。这意味着编译器没有丝毫想到它是什么类型的对象。所以,如果你发送消息" height"对于声明为id的对象,编译器假定它是名为" height"的方法之一。它知道的。如果你有不同的方法命名"身高"使用不同的返回类型,编译器不知道该调用将返回什么。

例如,如果在一个类中有一个方法 - (int)height,而在另一个类中有另一个方法 - (CGFloat)高度,则编译器不知道方法返回的值是int还是CGFloat的。

解决方案是:来自" id"特定类型,最好是正确类型。或者不要为名为" height"。

的方法使用不同的返回类型