Solicitud HTTP de iOS llamada dos veces

Tengo una function que hace la request GET al server. Funciona bien pero por alguna razón se llama dos veces. Llamo a la function cuando se presiona un button.

Este es el código de function:

-(void) GETasync: (NSString *) path{ receivedData = [[NSMutableData alloc] init]; NSURLRequest *request=[NSURLRequest requestWithURL: [NSURL URLWithString: path] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; NSHTTPURLResponse * response; NSError * error; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSLog(@"data received"); } 

Entonces veo en salida:

 2012-03-07 16:36:41.509 KW2[24136:bf03] data received 2012-03-07 16:36:41.694 KW2[24136:bf03] data received 

También tengo una function para la request POST y es el mismo problema con ella.

Estoy asumiendo que está imprimiendo ese logging en su connection:didReceiveData: método de delegado connection:didReceiveData: Ese método se puede llamar varias veces para una sola connection; de hecho, se llama comúnmente al less dos veces.

De la documentation:

El delegado recibe una connection periódica: didReceiveData: posts a medida que se reciben los datos. La implementación del delegado es responsable de almacenar los datos recién recibidos.

 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { // Append the new data to receivedData. // receivedData is an instance variable declanetworking elsewhere. [receivedData appendData:data]; } 

EDITAR: veo que en sus últimas ediciones agregó esa información de logging (o tal vez no la vi enseguida, me avergüenzo).

¿Es posible que llame a ese método por un manejador de notifications? Si es así, ¿posiblemente haya registrado dos veces esa notificación?> De ahí que su manejador se invoque dos veces.

El problema fue que conecté IBOutlets desde File'Owner y First Responder a los botones en IB.

Después de quitar los cables File's Owner del File's Owner , el método comenzó a llamarse solo una vez.

También asegúrese de verificar las conexiones de IBAction para su button en Interface Builder. Si copy y pega botones en IB, puede terminar teniendo 2 o más conexiones de IBAction idénticas para un button, lo que haría que el método se ejecutara dos veces con solo un clic.