post thumbnail

Objective-C desde Cero: Conceptos Básicos

Publicado Por: Oscar González, El 17/06/2013


Detalles del Curso:

Dificultad: Novato

Duración: 10 min


Más artículos en Objective-C desde Cero

Este es el artículo Conceptos Básicos de la serie Objective-C desde Cero - Mostrar todos

  1. Conceptos Básicos
  2. Orientación a Objetos
  3. Orientación a Objetos - parte 2
  4. Strings, Números y Colecciones

Bienvenido a esta nueva serie que se estará presentando alternativamente a la serie "iOS desde Cero", para fortalecer las bases que te harán entender mejor y desarrollar aplicaciones más robustas, tanto para Mac OS X como para iOS.


Historia

Hace 41 años atrás (1972) nace el lenguaje C, introduciendo una sintaxis innovadora que se convirtió luego en la más popular del mundo, influenciando a muchos lenguajes que utilizamos hoy en día.

En 1980 aparece SmallTalk, el primer lenguaje orientado a objetos. Fue entonces cuando se pensó que se podría crear un lenguaje como C pero con orientación a objetos, y así nació C++ en el 83. Más adelante, en 1986 fue creado Objective-C como una extensión del lenguaje C, añadiéndole: clases, objetos, métodos, protocolos, excepciones, propiedades y categorías.

En 1988 Objective-C fue adoptado por NeXT (la compañía que fundó Steve Jobs cuando dejó Apple). Este fue utilizado como base para construir el sistema operativo que correrían sus computadores, NeXTStep.

En el 96 Apple compró NeXT, y su sistema operativo, NextStep, pasó a convertirse en Mac OS X en 2001. Es por esto que verás que la mayoría de las clases del SDK de iOS y Mac tienen el prefijo "NS", porque provienen de NeXTStep.

En 2007 se introdujo el iPhone, cuyo sistema operativo sería basado en las tecnologías de Mac. Es por esta razón que Objective-C también es el lenguaje utilizado para programar las aplicaciones nativas de iOS.

Toda esta plataforma de Apple está sentada sobre más de 20 años de historia y evolución de Objective-C, por eso no puede ser eliminado del cuadro.


El lenguaje

Objective-C al principio puede parecer intimidante porque se ve muy diferente, si vienes de lenguajes como Java o C++, pero la verdad es que es bastante sencillo.

A diferencia de C++, Java o C#, Objective-C no esta basado en C, Objective-C es C. Por lo tanto podrías copiar código de un programa hecho en C y pegarlo en uno de Objective-C y este compilará.

Vamos a dar inicio a este tutorial. Abrimos Xcode (en este caso uso la versión 4.6.2) y creamos un nuevo proyecto seleccionando Application > Command Line Tool.

¡Alerta!

Los siguientes ejemplos son Objective-C puro, no son específicos del desarrollo iOS ni de Mac OS X, sino del lenguaje. Para información básica sobre Xcode y como usarlo puedes revisar el primer capítulo de la serie "iOS desde Cero".

ventana de Xcode Nuevo Proyecto

En la siguiente ventana colocamos el nombre del producto, el nombre de la organización, el identificador de la compañía, y seleccionamos "Foundation" del combo y chequeamos "Use Automatic Reference Counting"

detalle de proyecto - objective-c

"Foundation" es un framework de Apple que facilita el manejo de estructuras básicas como colecciones, strings, fechas, entre otros.

"Automatic Reference Counting" (ARC) en un manejador de memoria (no recolector de basura como el de Java o C#) que nos ahorrará tener que hacer release (similar a delete o free en C++). ARC lleva el conteo de referencias (punteros) a direcciones de memoria y es capaz de hacer la liberación del espacio automáticamente por nosotros cuando el conteo llega a cero. En otras palabras, cuando creas un objeto, este es alocado en memoria y apuntado por una variable que llamamos "apuntador", cuando esta variable deja de existir (Ej: Terminó la ejecución de la función donde fue creado), el espacio de memoria no es apuntado por nadie, por lo tanto ARC lo borra.

Guardamos en el directorio de nuestra preferencia y empezamos a programar.

Estructura de un programa

Si todo salió bien, deberíamos ver un archivo llamado main.m con el siguiente código:

//
//  main.m
//  Ejemplo 1 - Objective-C
//
//  Created by Oscar Vicente González Greco on 16/6/13.
//  Copyright (c) 2013 Codehero. All rights reserved.
//

#import <Foundation/Foundation.h>       //1

int main(int argc, const char * argv[]) //2
{

    @autoreleasepool {                  //3

        // insert code here...          //4
        NSLog(@"Hello, World!");        //5

    }
    return 0;                           //6
}
  1. En esta línea importamos el foundation framework. De esta menear le dijimos a la aplicación que vamos a utilizarlo.
  2. No importa si programas para iOS o Mac, todas las aplicaciones en Objective-C inician con la función main. Xcode siempre la va incluir por nosotros, por lo tanto no es necesario que la escribamos.
  3. autoreleasepool tiene que ver con manejo de memoria, por ahora vamos a ignorarlo, esto lo estaré explicando junto a ARC con más detalle en futuros capítulos.
  4. Esto es un comentario. También podemos comentar con /* */ como en la mayoría de los lenguajes modernos.
  5. NSLog se usa para escribir mensajes de salida (imprimir por pantalla), es el equivalente, a printf de C++, system.out.println de Java o console.writeline de C#.
  6. Este es el final de la función main, indicando que fue exitosa la ejecución.

Objective-C es un lenguaje case sensitive, esto significa que main es diferente de Main.

Por otro lado, no es sensible a espacios en blanco por lo que la función main se podría declarar también de la siguiente manera:

int main(int argc,
         const char * argv[])
...

Corriendo la aplicación

Objective-C es un lenguaje que debe ser compilado. A diferencia de Javascript, PHP, Ruby o Python, que son lenguajes interpretados.

Para compilar podemos seleccionar Product > Build o presionar Command+B que es el atajo. Si no dañamos nada del proyecto que generó Xcode para nosotros, debería decir "Build Succeeded".

Si queremos correr la aplicación seleccionamos el botón de la esquina superior izquierda que dice "Run" o podemos también ir a Product > Run, o presionar el atajo Command+R. Xcode compila y corre el programa (no es necesario compilar y correr manualmente, xcode compila siempre antes de correr).

En la parte inferior de la ventana veremos que apareció un panel, este contiene a la consola del lado derecho.

Consola de xcode

Luego de correr la aplicación debería decir:

> Ejemplo 1 - Objective-C[3812:303] Hello, World!

Este es el mensaje que mandamos a imprimir con NSLog.

Variables

Todas las variables en Objective-C se declaran igual que en C. La estructura de la definición es la siguiente:

int myVariable = 10;
tipoDeDato NombreDeVariable = Valor;

Los tipos de dato primitivos en Objective-C son los mismos que en C solo que incluimos uno más:

  • int: para numeros enteros
  • float: para puntos flotante (valores con decimales)
  • double: un punto flotante de mayor precisión (dobla la cantidad de decimales de float)
  • char: para carateres simples
  • BOOL: este es el que incluimos que no tenia C, es para valores booleanos (verdadero o falso, en objective-C: YES o NO)

Condicionales

Los condicionales también son idénticos a los de C:

if (a == b) {
    // this...
}
else {
    // that...
}
switch (numbers) {
    case 1:
        // something
        break;
    case 2:
        // other something
        break;

    default:
        // none of the above
        break;
}

Ciclos

Igualmente los mismo de C:

do {
   // something
} while (a > b);
while (a > b) {
    // loop
}
for (int i = 0; i < 10; i++) {
    // loop
}

Incluimos uno más que es el "For In" o "For each":

for (NSString *name in users) {
    // do something with the user
}

Este es para recorrer colecciones de objetos, más adelante los explicaré con detalle.


Conclusión

Hasta ahora lo que hemos visto de Objective-C no es muy diferente de C. En el próximo capitulo hablaremos de operadores, numeros, strings (cadenas de caracteres), enumeradores, entre otras cosas antes de introducirnos a la orientación a objetos.


¿Te ha gustado esta publicación?

Compártela:

Por Oscar González

Conoce más sobre este autor aquí


comments powered by Disqus