Ir al contenido principal

Conociendo iPhone/iPod Touch

Después de algunos posts sobre movilidad, hay algunos de vosotros que me habéis preguntado por la programación del iphone y iPod Touch.

Las plataformas más usuales son Symbian (Nokia, Sony Ericsson, PSION, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp), Rim (Blackberry), Windows Mobile (varios fabricantes, como HTC, Samsung, HP), Google Android (HTC, Samsung), iPhone OS (iPhone / iPod Touch). Con Java, podemos desarrollar aplicaciones para Symbian, Rim, Android (con su SDK) y Windows Mobile. Cierto es que para Windows Mobile, por ejemplo, yo prefiero usar .NET, siempre que no tengamos como Requisito No Funcional que la aplicación sea desarrollada en software libre. Para el iPhone resulta muy complejo el desarrollo en Java, más por problemas de licencia, que por cuestiones técnicas. Por ello, lo mejor es usar Objective-C.

Particularidades del iPhone / iPod Touch

- Pantalla con resolución de 480x320px
- Una sola aplicación capta el foco, las demás permanecen cerradas.
- Memoria RAM escasa. Hay que tener presente que hay que liberar recursos cuando no hacen falta (en Java este proceso es automático)
- Hardware adicional: GPS, acelerómetro, teléfono...
- Es posible acceder a datos PIM: correo, contactos,...




Aplicaciones para iPhone: AppStore
En el AppStore se pueden encontrar todas las aplicaciones para iPhone. Se trata de un gran repositorio de programas.
En él, se pueden encontrar aplicaciones gratuitas y de pago (en este caso, el 30% de cada venta va a parar a Apple), y funciona de forma similar a como lo hace iTunes, generando un beneficio de 430 millones de dólares y realizándose más de 1000 millones de descargas.

Para poder publicar en AppStore hay que tener una licencia de desarrollador que viene a salir por unos 80 euros. La aplicación que desarrollemos deberá cumplir las Condiciones de Uso, que en ocasiones es bastante restrictiva, por ejemplo, se han desestimado aplicaciones por suponer competencia de la análoga de Apple.

Arquitectura



Foundation Framework son las clases básicas para programar, común al Macintosh y al iPhone / iPod.

Cocoa Touch Framework gestiona, entre otras cosas, los eventos y la interfaz táctil. Es exclusiva a iPhone / iPod.

Objective-C es parecido a ANSI C, pero su sintaxis está extendida a Orientación a Objetos. Se trata de un lenguaje muy expresivo, para hacernos una idea, esta sería la declaración de un método:

-(NSArray *) listaCiudadesMayoresDe: (NSNumber *)kilometros delPais: (NSString *)pais;


No existe el control de acceso a los métodos, ya que todos son "public".
Otra particularidad del lenguaje es que todos los objetos vienen referenciados por su puntero. Por tanto tendremos que prestar especial atención a reservar memoria y liberarla cuando ya no sea necesaria.

Esto solo son las bases para el que quiera adentrarse en este mundo del desarrollo de aplicaciones para iPhone, que es bastante peculiar, comparado con la programación del resto de plataformas.

Comentarios

Publicar un comentario

Entradas populares de este blog

Métrica v3 vs Metodologías Ágiles

Métrica v3: Metodología de Planificación, Desarrollo y Mantenimiento de sistemas de información que propone el Ministerio de Administraciones Públicas. Cualquier defensor de la técnicas, metodologías y herramienta ágiles sostendrá que Métrica v3 es un sistema demasiado pesado, tanto en su implementación, como en sus procesos de mantenimiento. Yo lo corroboraría, pero sin demonizarla. Estoy acostumbrado a que en este mundo de la informática se creen auténticos "dogmas de fe", que acarrean sus propias "guerras religiosas". Algunos ejemplos podrían ser: Software privativo vs Software libre, Windows vs Linux, Web Services vs Rest, Oracle vs MySQL, Explorer vs Firefox, Apache vs IIS, Eclipse vs Netbeans, y así podríamos seguir con un largo etcétera. En vez de buscar la mejor solución, o soluciones universales, yo propongo realizar un intenso análisis, y respondernos ciertas preguntas. Por regla general, no hay una solución que valga "para todo". La pregunta que

Lenguajes: Pasado, Presente y Futuro

Escribo este post al hilo del artículo que he leido en dosideas.com. En él, se habla de las habilidades que debería tener un programador para tener un currículum relevante en los próximos cinco años: 1. Uno de los "3 Grandes" (Java, .NET, PHP) 2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications) 3. Desarrollo web 4. Servicios web 5. Habilidades humanas 6. Un lenguaje de programación dinámico y/o funcional 7. Metodologías ágiles 8. Conocimiento de dominio 9. "Higiene" de desarrollo 10. Desarrollo móvil A partir de este artículo, estuve debatiendo con algunos compañeros y saqué algunas conclusiones que quiero plasmar aquí. Pienso que el artículo es un poco mejorable, dada la arbitrariedad con la que se han escogido los conocimientos a adquirir. De hecho, muchas de esas habilidades hay que tenerlas en el presente (yo cumpliría de 9 a 10). Me voy a centrar en el punto 1, uno de los "3 Grandes" (Java, .NET, PHP). Antes de hablar de "gran

¿Por qué Yii Framework?

En Soltel presumimos de tener una actitud innovadora, que nos obliga a probar las distintas tecnologías que van llegando al mercado, y que ajustándose a nuestro stack, puedan mejorar en algo nuestros desarrollos. Una vez analizado el framework o librería, lo probamos en proyectos internos que nos permitan conocer con más detalle sus características. En este trabajo de campo es donde realmente se decide si es interesante o no añadir el framework a nuestro stack, y con ello ofrecerlo en los desarrollos que realizamos para nuestros clientes. En este proceso, llevábamos bastante tiempo buscando un framework PHP que realmente aportara valor y se adecuara en tiempos de desarrollo, rendimiento y arquitectura a lo que necesitamos ofrecer en nuestros proyectos. Ya habíamos descartado frameworks como Prado, por ser bastante pesado y tener una arquitectura demasiado compleja. Con Yii, sin embargo, nos hemos llevado una agradable sorpresa. Yii es un framework PHP, libre (licencia BSD), basado en