Hola Mundo. Objective-C
SOLUCIONARIO
Hola Mundo. Objective-C
2024-05-03
Por
Occam's Razor

Objective-C es muy similar a C y C++. En este post veremos como escribir el programa Hola Mundo
#import <Foundation/Foundation.h>

/* Podemos utilizar comentarios
   Multilinea como en C */
int main () {
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  
  NSLog (@"Hola Mundo\n"); // Comentario en una línea ala C++
  
  [pool drain];
  return 0;
}

Objective-C, al igual que C++, es un super conjunto de C y por lo tanto, el código que hemos mostrado para la versión C de nuestro Hola Mundo es perfectamente válido. Sin embargo, el lenguaje se popularizó cuando fue elegido como lenguaje de programación para la plataforma NeXT y su sistema operativo NeXTStep. NeXTStep como todo sistema operativo que se precie ofrecía a los programadores una serie de elementos para facilitar la programación de aplicaciones.

Vamos a centrarnos en el uso de Objective-C sobre esta plataforma por dos razones fundamentales. La primera es que de no ser así, las versiones Objective-C y C serían idénticas (a no ser que quisiéramos liarla a propósito). La segunda es que gran parte de NeXTStep todavía existe en los sistemas operativos de la compañía Apple además de existir una versión libre conocida como GNUStep.

Merece la pena echar un ojo a NeXTStep debido a la elegancia (herencia de Smalltalk) tanto en su diseño como en su implementación y es por ello que incluimos esta faceta en este libro.

SABIAS QUE

Todas esas funciones y clases comienzan por NS ya que forman parte del sistema operativo NeXTStep

La primera y última línea del programa hacen uso de la clase NSAutoreleasePool la cual ofrece un sistema de gestión de memoria de contaje de referencia. Lo que esto significa, así sin entrar en detalles, es que cada vez que usamos un objeto un contador interno de uso se incrementa. De la misma forma, cuando dejamos de usar un objeto, el contador se decrementa. Sin embargo, el objeto en cuestión solo se destruirá cuando ese contador llegue a cero. Eso nos permite evitar el borrar objetos por error que todavía están siendo utilizados en otra parte de nuestro programa. El mensaje drain al final se encarga de liberar los objetos en este entorno.

Si bien, en este ejemplo, esas operaciones no son necesarias, es algo normal en los programas Objective-C y por ello lo incluimos en este Hola Mundo.

SOY NOVATO

Los programas Objective-C utilizan el caracter @ para acceder a funciones específicas del lenguaje y diferenciarlas del C estándar. Por ejemplo, en nuestro programa de ejemplo, al anteponer la arroba a la cadena de caracteres le estamos diciendo al compilador que lo que queremos es que genere un objeto de la clase NSString en lugar de una cadena de caracteres C estándar (una secuencia de bytes en una determinada posición de memoria terminada con el caracter \0).

Para poder utilizar Objective-C y las librerías estándar debemos instalar los siguientes paquetes:

gnustep-devel y gobjc

Para distribuciones basadas en Debian.

$ apt install gnustep-devel gobjc

Los programas Objective-C suelen utilizar la extensión .m. Para compilar el programa Hola Mundo debemos utilizar una instrucción como la siguiente.

$ gcc -o helloGS hello.m `gnustep-config --objc-flags` \
> -L/usr/lib/GNUstep/ -lgnustep-base -lobjc

Objective-C fue creado principalmente por Brad Cox y Tom Love a principios de los 80 en su propia compañía llamada Productivity Product International. Objective-C buscaba aunar la potencia del lenguaje Smalltalk y la compatibilidad con C que en aquel momento era muy importante.

Al igual que con C y C++, Objective-C fue inicialmente descrito en un libro titulado Object-Oriented Programming, An Evolutionary Approach publicado en 1986.

Fue en 1988 cuando NeXT licenció Objective C de sus creadores. La compañía ahora se llamaba StepStone. NeXT desarrollo el AppKit y el Foundation Kit, algo así como el equivalente a la librería C estándar o las STL de C++ y las utilizó para desarrollar NeXTStep.

En 1996, Apple compró NeXT y utilizó OpenStep (la especificación de NeXTStep para utilizarlo en otros sistemas) para desarrollar Mac OSX, el cual incluía herramientas de desarrollo para Objective-C. Eventualmente esas herramientas convergieron en XCode y mucho del trabajo desarrollado por NeXT acabo en los APIs Cocoa.

Resumen

  • Lenguaje compilado
  • Extension: m
  • Terminador de líneas: ;
  • Agrupa instrucciones con : {...}
  • Comentarios multilinea: Entre caracteres /* */
  • Comentarios misma lina: //
  • Delimitador de cadenas: "cadena¨ o @"cadena"
  • Puedes imprimir textos con NSLog o puts (No añade retorno de carro)
  • No soporta cadenas multilínea nativamente
  • No soporta HERE-DOCS
  • Punto de entrada: main
  • Requiere definición previa de todos los elementos (ficheros include para declarar funciones)

SOBRE Occam's Razor
Somos una revista libre que intenta explicar de forma sencilla conceptos tecnológicos y científicos de los que no podemos escapar. Al final, todo es más fácil de lo que parece!

 
Tu publicidad aquí :)