在我的表格视图的cellForRowAtIndexPath中,我有

MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0];

在您告诉我不要使用xib之前:我有多个表视图,其单元格必须看起来相同。使用xib似乎是完成此操作的最佳方法。

有问题的ResultCell xib由MenuItemCell“拥有”。 MenuItemCellUITableViewCell的另一个子类的子类。

这是问题所在:我在单元格分配行后直接放置一个断点,这是我的lldb结果:
(lldb) po [cell class]
(id) $3 = 0x00b6b5fc UITableViewCell

为什么我的单元格是UITableViewCell而不是MenuItemCell? (或者也许是,而po不是找出答案的正确方法?)

最佳答案

您可能没有告诉Xcode / Interface Builder从XIB实例化MenuItemCell,所以它使用默认的实现UITableViewCell。请注意,强制转换对象只会使编译器认为它是指定类的实例。它不会神奇地将对象转换为类的实例。 (换句话说,这是一个copmile时间表达式,而不是运行时表达式。)

10-08 15:45