我有一个名为UITableViewCell
的{{1}}子类。在MyCustomCell
代表的didSelectRowAtIndexPath:
方法中,我有这个:
UITableView
该行提示来自Xcode的警告:不兼容的类型使用“UITableViewCell *”类型的表达式初始化“MyCustomCell *”
如果我将其更改为以下行,则警告消失。但是这两行都适合我。
MyCustomCell *cell = [tableView cellForRowAtIndexPath:indexPath];
我应该完全应用类型转换吗?
修改详情:
在MyCustomCell *cell = (MyCustomCell *)[tableView cellForRowAtIndexPath:indexPath];
方法中,我使用cellForRowAtIndexPath:
来创建这些单元格。日志告诉我单元格确实来自MyCustomCell
:
MyCustomCell
登录NSLog(@"cellForRowAtIndexPath cell:%@", cell);
也确认didSelectRowAtIndexPath:
将UITableView
返回给我:
MyCustomCell
对我来说,waring只是因为Xcode无法预先知道细胞是如何创建的。由于从NSLog(@"didSelectRowAtIndexPath cell: %@", [tableView cellForRowAtIndexPath:indexPath]);
返回的单元格已经[tableView cellForRowAtIndexPath:indexPath]
,因此它们是兼容的。
答案 0 :(得分:3)
是的,你应该施展。由于cellForRowAtIndexPath:
返回的UITableViewCell *
不是MyCustomCell *
,因此您在分配中有两种不兼容的类型,这是非法的(至少就C标准而言)。