Tengo la intención de crear 2 solicitudes usando NSURLConnection. Cuando el servidor responde y llama a connectionDidFinishLoading, transfiere la conexión como parámetro, pero ¿cómo identifico qué conexión se transfiere?Crear múltiples NSURLConnections. Cómo identificar qué llamada Async
Respuesta
Guarde ambos objetos NSURLConnection como variables miembro de cualquier objeto delegado que haya pasado a connectionWithRequest: delegate :. A continuación, sólo se puede comparar cada uno de los al NSURLConnection pasado a connectionDidFinishLoading :, y responder de manera apropiada:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (connection == firstConnection) {
// do something
}
else if (connection == secondConnection) {
// do something else
}
}
Otra opción un poco más orientado a objetos sería la creación de dos objetos diferentes delegados, cada uno de ellos sabe cómo tratar con cada tipo de conexión Luego solo pase el delegado apropiado cuando cree cada conexión. De esta forma, no necesita verificar para ver qué conexión tiene, ya que cada delegado solo recibirá connectionDidFinishLoading: para su propia conexión.
Lo que hago en mis proyectos es crear una clase contenedora para la conexión. De esta manera, puede mantener una nueva instancia para cada conexión que necesita y mantener estas clases en otra clase de administrador.
Algo así como [AsynchronousConnection initWithURL: delegado: Selector:]
entonces puede estar asegurar lo correcto se llama cuando se hace el NSURLConnection/fallidos.
Prefiero delegados diferentes para cada conexión, también. Aunque es un poco caro. Afortunadamente, puedes simplificar las cosas usando bloques. Es una característica nueva que aún no existe en SDK estándar, pero hay 3rd-party framework called PLBlocks que ya puede usar. Here is an article sobre cómo usarlos, también contiene un ejemplo para NSURLConnection.
Este es el código de cliente que realiza la solicitud HTTP con el bloque de devolución de llamada:
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
[NSURLConnection sendAsynchronousRequest:req onCompletionDo: ^(NSData *data, NSURLResponse *res, NSError *err) {
NSLog(@"data: %ld bytes. res: %@, error: %@", (long)[data length], res, err);
[cell.activity stopAnimating];
}];
he utilizado para crear una envoltura alrededor de encargo NSURLConnection
, también, pero ahora he cambiado a ASIHTTPRequest. Esta es una fantástica biblioteca que ofrece mucha más flexibilidad y funciones que NSURLConnection
. Echa un vistazo y pruébalo, realmente vale la pena.
Uso esto también, pero tengo un contenedor alrededor de este – coneybeare
Solía utilizar ASIHTTPRequest como bien, pero lamentablemente desde septiembre de 2011 ya no es compatible con su autor: http://allseeing-i.com/%5Brequest_release%5D –
@DanJ: una alternativa muy popular en estos días parece ser [AFNetworking] (https://github.com/AFNetworking/AFNetworking/). –
Por favor, no se refieren https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html
ir al archivo NSURLConnection.h y encontrará lo siguiente.
Cuando se crea, un NSURLConnection realiza una copia en profundidad de NSURLRequest. Esta copia está disponible a través del método -originalRequest . A medida que la conexión realiza la carga, esta solicitud puede cambiar como resultado de la canonicalización del protocolo o debido a los siguientes redireccionamientos . -currentRequest se puede usar para recuperar este valor.
En definitiva [connection currentRequest] .URL absoluteURL might help.
Saludos, PRASANNA.
Prasanna ¿qué significa eso? – Ranjit
- 1. Async llamada Objective C iphone
- 2. Ejecutando múltiples C# Task Async
- 3. ThreadPool.QueueUserWorkItem con llamada Async dentro del hilo
- 4. Async http client (ning) crear más hilos?
- 5. ¿Cómo hago una llamada jQuery bloqueando AJAX sin async = false?
- 6. ¿Qué son los zócalos Async?
- 7. Cómo identificar múltiples adaptadores de serie USB en Ubuntu 10.1
- 8. ¿Qué navegadores son compatibles con <script async = "async" />?
- 9. Cacao: ¿Se requieren comprobaciones para múltiples NSURLConnections asíncronas que utilizan las mismas funciones de delegado?
- 10. Cómo crear un semáforo entre los elementos HTML cargados async
- 11. Async Cargar archivos de JavaScript con devolución de llamada
- 12. ¿Número máximo de NSURLConnections concurrentes en el mismo host?
- 13. ¿Qué hace "async: false" en jQuery.ajax()?
- 14. Reescribir la espera de múltiples hilos usando async/await
- 15. C# Async - ¿Cómo funciona?
- 16. Esperar múltiples devoluciones de llamada
- 17. Async task android onPostExecute
- 18. Cómo crear un contenedor para una llamada asincrónica?
- 19. Retransmisiones de Async múltiples al mismo tiempo - ASP.NET
- 20. cómo identificar la llamada entrante de Iphone y la notificación de visualización?
- 21. ¿Por qué el async CTP funciona mal?
- 22. ¿Por qué existe la palabra clave async
- 23. Cómo administrar múltiples tareas de Async de manera eficiente en Android
- 24. argparse: identificar qué subparser se utilizó
- 25. Objective-C: Llamada selectores con múltiples argumentos
- 26. ¿Por qué utilizar async y esperar con Task <>?
- 27. Async CTP: ¿cómo puedo usar async/await para llamar a un servicio wcf?
- 28. Cómo identificar dispositivos con udev
- 29. ¿Identificar qué codificación usa PayPal IPN?
- 30. ¿Cómo identificar qué botón de radio se acepta?
Esto no es una solución muy escalable – coneybeare
No tan escalable, pero buena solución, solucionó mi problema. Gracias. – Krishna
@cduhn es posible subclasificar NSURLConnection y darle una propiedad de ID como NSString, por ejemplo. De esta forma, si tiene un número indefinido de objetos que pueden necesitar conexión (por ejemplo, aceptar una lista de solicitudes de amistad), todo lo que tiene que hacer es configurar su ID de CustomNSURLconection para que tenga el mismo valor que el que identifica de manera única su objeto por ejemplo, ID de usuario? De esta manera, no debe tener una instancia de cientos de NSURLconnections. No puedo probar esto en este momento, es por eso que pregunto aquí – pnizzle