iphone - XCode 4 advertencia "Resultado de expresión no utilizado" para NSURLConnection
objective-c ios (3)
Alguien debería ser responsable de esa NSURLConnection
. No es necesario almacenar la conexión, pero es mejor si lo hace. El problema es que después de crear nuestra NSURLConnection
nadie tiene un puntero a esa instancia creada, que no debería ser el caso.
Supongamos el siguiente ejemplo:
- su instancia de
ClassA
está creando un instane deNSURLConnection
- tu instancia de
ClassA
está siendo liberada y desasignada -
NSURLConnection
todavía está activo y despedirá al delegado a su instancia desasignada.
Para resolver ese problema, debe almacenar la instancia de NSURLConnection
y debe liberar esa conexión si su instancia de ClassA
está siendo desasignada, lo que resulta en la desasignación de la instancia de NSURLConnection
también.
Solo estoy tratando de hacer mi transferencia de datos habitual. Defino mi NSMutableURLRequest y luego llamo
[[NSURLConnection alloc] initWithRequest:request delegate:self];
Esto solía estar bien con Xcode 3 pero Xcode 4 me advierte sobre " Resultado de expresión no utilizado " en esa línea. La solicitud funciona, pero me gustaría encontrar la manera de deshacerme de la advertencia.
Supongo que podría almacenar la conexión en una variable pero realmente no la necesito y no puedo ver el punto de configurarla en la siguiente línea (aunque esto eliminaría la advertencia)
Tenga en cuenta: no estoy 100% seguro de si es XCode 4 o si el hecho de que ARC está habilitado.
¡Muchas gracias por su ayuda!
Cuando una función devuelve un resultado que no necesita, puede convertirlo en vacío para eliminar la advertencia del compilador:
(void) [[NSURLConnection alloc] initWithRequest:request delegate:self];
Todavía no he usado ARC, así que no puedo decir si es una buena idea, antes de ARC necesitaría mantener el resultado de este puntero en algún lugar para poder liberarlo.
La respuesta del progrmr es correcta, pero aquí hay una manera aún más clara de hacerlo:
[NSURLConnection connectionWithRequest:request delegate:self];
Esto no causa una advertencia, incluso si no arroja el resultado a vacío.