Jul.20

Programación IOS… ¿por donde empiezo? (II): xCode, IOS SDK y Objetive C. ¿Qué son?

Si estas leyendo esto es que ya has decidido adentrarte en el mundo del desarrollo IOS, desde aquí intentare facilitarte un poco el camino poniéndote sobre las pistas correctas para que puedas terminar de indagar y formarte. Mi pretensión con esta entrada es aclararte un poco conceptos básicos para que puedas ampliar información en los sitos correctos.  Por la red hay innumerables recursos dedicados a eso, y sitios como stackoverflow son una fuente inagotable y valiosísima de snipplets, código y recursos. En la entrada anterior veíamos, para empezar,  necesitaría:

  • Un OS X (real o virtualizado).
  • Una cuenta de Apple Developer.
  • Un IDE y el SDK para programar iPhone (xCode + iPhone SDK).
  • Conocimientos básicos de la arquitectura IOS y Objetive C.

 

Arquitectura IOS

En esta vamos intentar aclarar un poco como es el IDE y el SDK para que puedas empezar. IOS, desde la versión 4, esta estructurado en 4 capas (layers).

Capas Arquitectura IOS

 

Cada capa del sistema operativo proporciona un mayor nivel de abstracción del  hardware ofreciendo diferentes frameworks. En general, el nivel más alto de la capa se programa con el menor esfuerzo y menos líneas de código . Una vez identificadas las distintas capas que componen iOS  podemos mirar con más detalle los servicios prestados por cada capa y los frameworks correspondientes que hacen que esos servicios estén disponibles para nosotros.

  • Core OS: es la base de IOS (gestión de memoria, el sistema de ficheros, red y procesos).
  • Core Services: acceso a los servicios básicos.
  • Media: Tareas multimedia (audio, vídeo, OpenGL, imágenes, etc…).
  • Cocoa Touch:   funciones avanzadas como el acelerómetro, gestures,  controles táctiles, vistas, mensajería, etc…

xCode Xcode es el entorno de desarrollo integrado (IDE, en sus siglas en inglés) de Apple y se suministra gratuitamente junto con Mac OS X.  Xcode trabaja conjuntamente con Interface Builder (desde xCode 5 incluye Storyboards) , una herencia de NeXT, una herramienta gráfica para la creación de interfaces de usuario. Xcode incluye compiladores  GNU (GCC), y puede compilar C, C++, Objective-C, Objective-C++, Java y AppleScript mediante una amplia gama de modelos de programación, incluyendo, pero no limitado a Cocoa, Carbón y Java e implementa perfectamente MVC.

No es solo un editor de código, es mucho más ya que viene con una serie de herramientas que te permitirán, sin añadido alguno, codificar, depurar, repositorio y control de código fuente,  tests,  profiling e incluso publicar directamente en la App Store. Cuando lo instalemos y arranquemos veremos que esta dividido en diferentes áreas de trabajo:

 

 

Cada área tiene una función determinada aunque puede albergar mas de una vista/función diferente. Los más importantes de cada área:

  • Toolbar: Barra de herramientas, información  y selector de modo del editor.
  • Navigator area: Navegador de proyecto, información de compilación, gestor de breakpoints  y buscador de código.
  • Editor area: Editor de ficheros, editor de Storyboards (Interface Builder)
  • Debug area: Zona de debug.
  • Utility area: Propiedades, Herramientas, Controles, etc.

 

Como muestra un botón así que os dejo aquí un tutorial muy sencillito pero a la vez muy claro en vídeo de como se usa xCode:

 

 

Ya tenemos claro que arquitectura tiene IOS y como es su IDE pero… ¿y su lenguaje?

 

¿Que es objetive C?

Es un lenguaje de programación orientado a objetos creado como un superconjunto de C para que implementase un modelo de objetos parecido al de Smalltalk. Objective-C se creó para añadir características de la orientación a objetos al lenguaje C (como C++). En comparación con este, Objective-C es más dinámico y difiere la mayor parte de las decisiones hacia el momento de la ejecución, en lugar de hacerlo al momento de la compilación. En general, Objective-C se parece más al lenguaje humano.

Al derivar directamente de C muchas de sus características están presentes en Objective-C:

  • Sentencias de control de flujo (if, for, while…)
  • Tipos de datos fundamentales, estructuras y punteros.
  • Conversiones implícitas y explícitas entre tipos.
  • El ámbito de las variables: Global, estáticas o locales.
  • Las funciones y su sintaxis.
  • Las directivas del preprocesador.

 

Entonces…¿en que se diferencia de otros como C++? La clave de eso viene determinada por su origen en SmallTalk y no es otro que DINAMISMO en mayúsculas, muchas de las tareas que C++ hace en tiempo de compilación Objetive-C las hace en tiempo de ejecución. Objetive C basa su modelo de POO en el envío de  mensajes entre los objetos y no en la invocación de métodos de objetos. Es una diferencia sutil pero crucial para re definir, potenciar  y ampliar conceptos como la herencia y el polimorfismo.

Reconozco que al principio echaba pestes pero con el tiempo he aprendido a apreciarlo. Los bloques de objeto, la forma de tratar las propiedades, el uso de los protocolos, etc.  son otras diferencias cruciales que aportan dinamismo desconocido en C++ u otros lenguajes. En la otra cara de la moneda están temas como la forma de crear, inicializar y destruir objetos (más complicada) o su sintaxis, por lo menos para mí es más incomoda y cuesta acostumbrarse  (por ejemplo olvídate de cosas como  usar + para concatenar strings) .

Os dejo un enlace de Rekkebs BLOG que en su día me gusto bastante y da una lista completa de “curiosidades” que os pueden ayudar a comparar Objetive C con otros lenguajes como Java o C++.

Espero que todo esto os ayude a aclararos un poco y empezar con buen pie vuestra aventura como desarrolladores de IOS.

Share this Story:
  • facebook
  • twitter
  • gplus

About Roger

Leave a comment