tableview – selector no reconocido didSelectRowAtIndexPath

He tenido un problema con mi aplicación estrellarse en la selección de algo en el tableView. Esto no es 100% reproducible, pero sucede con relativa frecuencia.

Lo que sucede es dentro de mi class EventListViewController (una subclass de UITableViewController), sobrescribí la function didSelectRowAtIndexPath porque también estoy usando una barra de búsqueda en esta class, y quiero que solo select cuando no está buscando.

El código se ve así:

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

Sin embargo, cuando falla, rompo la exception y este es el post que recibo, en la línea que llama a la super function:

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

Imprimí algunas cosas en el depurador y todo me parece bien:

 (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] 

(El tableView tiene 2 secciones y la segunda sección tiene 2 inputs)

Alguien tiene alguna idea de lo que está sucediendo? Avíseme si necesita más información.

Nota: después de más investigaciones he descubierto que esto es 100% reproducible con los siguientes pasos: 1: carga la aplicación y haz clic en cualquiera de las dos inputs. 2: Regrese a la tablaView controller 3: pulse debajo de las dos inputs, en el espacio en blanco donde no debe haber una celda. La aplicación se bloqueará, pero observe que indexPath no dice que está intentando seleccionar una celda que está fuera de los límites de tableView, solo que el método tableView didSelectRowAtIndexPath no existe

La llamada a super en tableView:didSelectRowAtIndexPath: es innecesaria. Si no recuerdo UITableViewController , UITableViewController no proporciona una implementación pnetworkingeterminada de ese método. Por lo tanto, su llamada a los súper resultados en un crash.