Ios 多个名为error的方法。涉及多个课程

Ios 多个名为error的方法。涉及多个课程,ios,objective-c,uitableview,64-bit,Ios,Objective C,Uitableview,64 Bit,代码的最后一行“return[cell height]”给了我一个错误“找到了多个名为“height”的方法,但结果、参数类型或属性不匹配”。此代码在32位上运行良好,但在64位(模拟器)上运行不好 请有人帮我解决这个问题。还有其他一些帖子提到了这一点,但它们只有一种类型的类可以进行类型转换。我在数组self.cells中有不同的类 我可以检查每个“单元”的类类型,然后返回相应的高度,但这是一个麻烦的代码。有更好的方法吗 非常感谢你的帮助 - (CGFloat)tableView:(UITabl

代码的最后一行“return[cell height]”给了我一个错误“找到了多个名为“height”的方法,但结果、参数类型或属性不匹配”。此代码在32位上运行良好,但在64位(模拟器)上运行不好

请有人帮我解决这个问题。还有其他一些帖子提到了这一点,但它们只有一种类型的类可以进行类型转换。我在数组self.cells中有不同的类

我可以检查每个“单元”的类类型,然后返回相应的高度,但这是一个麻烦的代码。有更好的方法吗

非常感谢你的帮助

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:  (NSIndexPath *)indexPath
{
    id cell = self.cells[indexPath.row];
    if ([cell isKindOfClass:[TripCell class]])
    {
        return 150;
    }
    return [cell height];
}
您的“单元”被声明为具有类型“id”。这意味着编译器根本不知道它是什么类型的对象。因此,如果将消息“height”发送给声明为id的对象,编译器将假定它是它知道的名为“height”的方法之一。如果名为“height”的方法具有不同的返回类型,那么编译器不知道该调用将返回什么

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


解决方案是:将电池从“id”转换为特定类型,最好是正确的类型。或者不要对名为“height”的方法使用不同的返回类型。

尝试返回cell.bounds.size.height。。。。[cell height]不是一个你可以调用的方法,除非你做到了。我认为,CGFloat是罪魁祸首。在32位CGFloat上,浮点为浮点。在64位CGFloat上是双精度的。所以方法-(浮动)高度;及(CGFloat)高度;;32位相同,64位不同。谢谢大家。问题在于float和cgloat。将所有方法更改为返回CGFloat,从而解决了问题。