tableview – 无法识别的select器didSelectRowAtIndexPath

我一直有一个问题,我的应用程序崩溃在tableView中select的东西。 这不是100%可重复的,但是它经常发生。

会发生什么是在我的EventListViewController类(UITableViewController的一个子类)内,我覆盖了didSelectRowAtIndexPath函数,因为我在这个类中也使用了一个search栏,我希望它只在没有search的时候select。

代码如下所示:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if(!searching) [super tableView:tableView didSelectRowAtIndexPath:indexPath]; } 

但是,当它崩溃,我打破了exception,这是我得到的消息,在调用超级函数的线上:

 [EventListViewController tableView:didSelectRowAtIndexPath:]: unrecognized selector sent to instance 0xa648e50 

我在debugging器上打印了一些东西,这一切对我来说都很好:

 (lldb) po 0xa648e50 (int) $1 = 174362192 <EventListViewController: 0xa648e50> (lldb) po self (EventListViewController *) $2 = 0x0a648e50 <EventListViewController: 0xa648e50> (lldb) po tableView (UITableView *) $3 = 0x070fd400 <UITableView: 0x70fd400; frame = (0 0; 320 367); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x6e46750>; contentOffset: {-0, -0}> (lldb) po indexPath (NSIndexPath *) $4 = 0x06e8caf0 <NSIndexPath 0x6e8caf0> 2 indexes [1, 1] 

(tableView有2个部分,第二部分有2个条目)

任何人有任何想法发生了什么? 让我知道你是否需要更多的信息。

注:经过更多的调查后,我发现这是100%重现与下列步骤:1:加载应用程序,并点击两个条目之一。 2:回到tableView控制器3:点击下面的两个条目,在不应该有一个单元格的空白应用程序将崩溃,但注意到indexPath并没有说它试图select一个单元格是在tableView的范围之外,只是tableView didSelectRowAtIndexPath方法不存在

tableView:didSelectRowAtIndexPath:调用super是不必要的。 如果我没有记错, UITableViewController不提供该方法的默认实现。 因此,你的呼叫超级结果在崩溃。