Una pequeña introducción a Objective-C parte 1

Por medio del blog intentare (tanto como el trabajo me lo permita) realizar una pequeña introducción al lenguaje Objective-C.

Elegí este lenguaje ya que poco a poco sigue ganando terreno. Al realizar aplicaciones para dispositivos móviles tenemos pocas opciones, entre las principales se encuentra Android y Mac, pero sobre Android hay mucha documentación y ya se ha hablado bastante en los blogs por acá.

Nunca esta demás seguir aprendiendo. :)

Objective-C es el lenguaje que principalmente se utiliza para escribir software para Mac. Si se tienen bien claros los conceptos de la programación orientada a objetos y se ha tratado el lenguaje C entonces será mucho más fácil iniciar en este lenguaje.

Si no conoces C sería bueno que lo hicieras antes de iniciar.

Llamar a metodos.

Para iniciar lo antes posible, vamos a ver algunos ejemplos sencillos. La sintaxis básica para llamar un método en un objeto es la siguiente:

 

Los metodos pueden devolver un valor:

 

Puedes llamar métodos en las clases también, que es la manera de crear objetos. En el siguiente ejemplo. Llamamos al método string en la clase NSString, que devuelve un nuevo objeto NSString:

 

El tipo id significa que la variable myObject puede referirse a cualquier tipo de objeto, por lo que la clase actual y los métodos que aplican, conocen el tipo hasta que se compila la aplicación.

En el siguiente ejemplo, es obvio que el tipo de objeto será NSString, por lo que puede cambiar el tipo:

 

Ahora es una variable NSString, por lo que el compilador nos avisará si intenta utilizar un método de este objeto que no es compatible con NSString.

Algunos se dieron cuenta que hay un asterisco a la derecha del tipo de objeto. Todas las variables objeto de Objective-C son tipo puntero. El tipo id está predefinido como tipo puntero, por lo que no hay necesidad de agregar el asterisco.

Metodos anidados

Objective-C permite realizar anidamientos de mensajes (invocar a un método dentro de otro método). Por ejemplo:

 

En muchos lenguajes, el método de anidado o llamadas a la función tienen el siguiente aspecto:

 

El resultado de function2 se pasa como entrada a function1. En Object-C los mensajes anidados tienen el siguiente aspecto:

 

Cuando llamamos a un método estamos haciendo “messaging” al objeto. En Objective-C, todos los ‘mensajes’ que son enviados a los objetos se envían de forma dinámica para facilitar de esta forma el polimorfismo o la sobrecarga de métodos en las clases.

En Objective-C la invocación se puede realizar de dos formas: con la notación del “.”, y con la notación “[]” la de envío de mensajes (esta última es la que se suele utilizar).

Los ‘mensajes’ se ponen encerrados entre corchetes ‘[]‘ y dentro de ellos el objeto que recibe el mensaje en la parte izquierda y el mensaje con los argumentos necesarios en la parte derecha. Veamos esto con un ejemplo sencillo (nos vamos a basar en la declaración de método que aparece en la figura anterior):

 

Cuando hay anidamiento, se ejecutan las llamadas de dentro hacia fuera (como con las sumas y los paréntesis). Simplemente habría que tener en cuenta el tipo de objeto que devuelve la primera llamada para realizar la segunda. En el ejemplo anterior, necesitamos que el mensaje anidado (Persona alloc) devuelva un objeto, pues a continuación se invoca al método init (que es un método de objeto) que devuelve el objeto que lo ha invocado.

Evita que la anidación sea de más de dos llamadas a métodos en una línea para que al leerlo no sea complejo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

por?

Y por qué aquí? Digo, me gusta Objective-C, usé ese lenguaje varios años, pero estás en javaMexico. ObjC ni siquiera corre en la JVM; si hay alguna implementación para la JVM la deberías mencionar, pero según yo no hay una.

Alguna vez aceptamos el post

Alguna vez aceptamos el post de ViveCódigo sobre desarrollo en iOS y NodeJS así que supongo que no debería de haber problema.

El post tiene la palabra "Android" así que supongo que está bien.

Meramente por aprender.

Decir el por qué, me resulta dificíl, pero una de las principales razones es que siempre me he preguntado por que hay tan poca gente desarrollando para este lenguaje, en comparación a otros que en poco tiempo han tomado mucha fuerza como Android, etc.

Entonces me vino a la mente aprenderlo y saber por que algunas personas cuando escuchamos "Desarrollo de aplicaciones para Mac" nos quedamos pensando en algo tan lejano y dificíl.

Algo dificíl debe tener, por lo pronto, será solo por cuestiones de aprendizaje que haré estas publicaciones.

Se aceptan quejas sugerencias etc, etc.

:D

Saludos

Bueno al margen de la situacion que mencionan, creo que como introduccion a Obj-C antes de hablar de metodos y/o mensajes, seria bueno hablar sobre los objetos que son quienes los usan, esto ya que habra muchos programadores que sean experimentados y entiendan los conceptos pero para los que vamos empezando creo que quedarian algunas lagunas, como sugerencia seria que hablaras antes sobre otros temas por ejemplo:

Que diferencia hay al programar en MacOS o en iOS
Tipos de Datos que se pueden usar
Estructuras de control
Clases y Objetos
Mensajes