Últimamente he colaborado en el desarrollo de varias aplicaciones para iOS (versiones 4 y 5), estas aplicaciones consumen servicios REST que retornan JSON o XML lo que aunque es una tarea más o menos trivial requiere algo de investigación para hacerla bien por que hay muchos frameworks, formatos y plataformas que se pueden involucrar.
Después de investigar un rato, ver algunos ejemplos y leer bastante código termine seleccionando la libreríaASIHTTPRequest, esta librería es robusta y me permite hacer cosas como invocar los servicios de forma asíncrona (lo que debe ser obligatorio en aplicaciones con interfaz de usuario móvil o de escritorio) o consumir servicios que requieren autenticación por medio de headers.
Descargue las clases, agréguelas a su proyecto, no olvide incluir la clase reachability que esta en la carpeta Externals de ASIHTTPRequest y estará listo para consumir servicios Rest desde iOS, o casi listo…
Ahora bien, hace casi un año se lanzo la versión 5 del sistema operativo iOS y eso le generará algunos problemas ya que una de sus grandes novedades fue la recolección automática de objetos (ARC), es decir que ya no había que destruir manualmente las referencias a los objetos que no se usan, algo que antes hacíamos escribiendo instrucciones como:
[shareDialog release]
Otras instrucciones como retain, dealloc tampoco son necesarias si se esta trabajando en el modo ARC (Automatic Reference Counting)
Ahora bien, estos cambios que se introducen en el compilador hacen que librerías como la que venia usando para consumir los servicios queden inservibles. Sin embargo el compilador tiene una opción (flag) que se puede aplicar por cada archivo de clase de forma que ignore la característica de ARC para ese archivo al momento de compilar. Instrucciones (en ingles) y unas buenas fotos de como hacerlo aquí
En este punto su solución debe compilar y ya tiene todo lo necesario para empezar a consumir servicios REST desde su aplicación iOS 4 o 5.
PD: Sobre ARC, Es importante aclara que esto es una nueva característica del compilador y no del encargado de la ejecución, así que no es ni parecido al Garbage Collector de .Net aunque podría confundirse, básicamente lo que esta pasando es que el compilador agrega las instrucciones a nuestro programa cuando lo compila
No hay comentarios:
Publicar un comentario