"Descripción" falla para NSURLConnection

Tengo una class derivada de NSURLConnection. Curiosamente, la description y el fracaso de dealloc dirigen a la NSURLConnection (incluso si la operación de transferencia de datos real tiene éxito).

Aquí está el método init de mi class:

 -(id) init { self = [super init]; NSLog(@"%s -- self description is %@", __PRETTY_FUNCTION__, [self description]); NSLog(@"%s -- super description is %@", __PRETTY_FUNCTION__, [super description]); return self; } 

Aquí está el resultado del logging de la ejecución de este código (implementé la description para mi class):

 2011-08-24 10:41:40.493 SleepyHead[77578:207] -[BinaryExchange init] -- self description is <BinaryExchange> (gdb) continue Program received signal: “EXC_BAD_ACCESS”. 

Cuando esto sucede, el depurador se detiene en la línea [super description] y en la NSURLConnection description la llamada a NSURLConnection description .

¿Qué diablos está pasando?

(Traté de asignar y no iniciar otra copy de la class antes de esta, con la posibilidad de que se utilizara un trozo de stack falsa, pero aún así obtengo la misma falla).

Adicional:

Incluso esta secuencia falla:

 NSURLConnection* dummy = [[NSURLConnection alloc] init]; NSLog(@"%s -- dummy NSURLConnection description is %@", __PRETTY_FUNCTION__, [dummy description]); 

Si hay un locking, hay un backtrace. Publícalo.

Parpadeo extraño, sin embargo.

[super description] está bastante cerca de tonterías. El método de description no está diseñado para usarse en un entorno de producción; es un método de solo desarrollo.

¿Anuló la description en su subclass, quizás?

También asignar y no iniciar otro no hace realmente nada. Puede que ni siquiera asigne nada. La mayoría de los clústeres de classs y muchas otras classs (como detalles de implementación) devolverán un singleton en alloc y no será hasta la initialization que una subclass en particular sea instanciada.


Oh – NSURLConnection no usa init como el inicializador designado. Necesita una request Lo más probable es que, al llamar a init , no esté realmente inicializando la class y se cuelga bastante espectacularmente como resultado de un estado interno no definido.

Use initWithRequest:....