2012-02-03 12 views
9

Me he encontrado con un gran problema. Parece que ASIHTTPRequest simplemente no quiere trabajar en una compilación de producción.
Todo funciona muy bien en la depuración. Sin embargo, una vez que compilo para producción, el siguiente código simplemente no quiere ejecutarse. No golpea ningún bloque completo ni falla. También he intentado usar selectores, con un delegado pero tampoco los llaman.ASIHTTPRequest falla en las compilaciones de producción

__block __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:URL]; 
[self performSelectorOnMainThread:@selector(startSpinner) withObject:nil waitUntilDone:NO]; 

[request setCompletionBlock:^{ 
    [self performSelectorOnMainThread:@selector(stopSpinner) withObject:nil waitUntilDone:NO]; 
}]; 

[request setFailedBlock:^{ 
    [self performSelectorOnMainThread:@selector(stopSpinner) withObject:nil waitUntilDone:NO]; 
}]; 

[request startAsynchronous]; 

Sé que es una especie de mala descripción de mi problema, pero ¿alguien tiene la más mínima idea de lo que podría causar este problema?

Respuesta

22

Parece que hay un error en ASIHttpRequest, que causa este bloqueo cuando se ejecuta con las optimizaciones del modo de lanzamiento.

Lo que funcionó para mí es apagar la optimización de los 2 archivos siguientes: ASIFormDataRequest.m ASIHTTPRequest.m

Para ello, seleccione el proyecto de destino, seleccione el archivo en la sección "Compilar fuentes" de la Pestaña "Crear fases"; y agregue -O0 (capitol O cero).

Puede leer mas sobre esto here

+0

Muchas gracias. – endy

+0

De hecho, ¡gracias, gracias! – cheeesus

+1

¿Cómo agregar bandera múltiple? Necesito agregar este indicador -fno-objc-arc para habilitar el trabajo en ARC y también dijiste que tengo que agregar este indicador -O0 para habilitar el trabajo en modo de lanzamiento, ¿cómo puedo agregar 2 banderas? – Abo3atef

Cuestiones relacionadas