Ya teniendo claro como funciona el entorno, lo suyo es empezar por las bases del lenguaje, sus características principales y su funcionamiento básico.

Introducción

Teniendo claro como crear proyectos en Xcode, ahora ya podemos incluir nuevo código en los proyectos. Para empezar y sin que sirva de precedente modificaremos el fichero main.m.
Los ficheros .m son los ficheros de implementación y los ficheros .h serán los ficheros de cabecera. Como puede apreciarse en sus similitudes, básicamente Objective C es como C pero vitaminado y orientado a objetos por lo que dispondremos de bibliotecas de clases bastante potentes a la hora de hacer nuestras aplicaciones, como este curso está enfocado a aprender el lenguaje en sí mismo, no veremos muchas de las bibliotecas disponibles para el lenguaje, ya que muchas de ellas van enfocadas al desarrollo gráfico de aplicaciones que es donde Objective C destaca, pero como todo se debe aprender desde lo básico es por donde vamos a empezar. 

Estructura del fichero main.m

Como en un lenguaje derivado de C tenemos todos los elementos de este lenguaje disponibles, estructuras de control y variables incluidas, pero veamos el ejemplo del fichero generado por el asistente de Xcode:
//
//  main.m
//  00_introduccion
//
//  Created by pepesan on 24/02/14.
//  Copyright (c) 2014 pepesan. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        
        // insert code here…
        NSLog(@”Hello, World!”);
        
    }
    return 0;
}

Comentarios

Como se puede ver en el código, tenemos los típicos comentarios de una línea al principio del fichero, que son los // que vemos al principio de cada línea, aunque también podemos disponer de los comentarios de varias líneas /*…*/ he aquí los ejemplos

//comentario de una línea
        
/*
Comentario de varias líneas

*/

Imports

Las importaciones son como las inclusiones de C, nos permiten tener acceso a otros ficheros para incluir su contenido y definiciones, pero como en Objective C las bibliotecas son muy completas, normalmente nos facilitan su inclusión mediante un fichero de cabecera de resumen que incluye todo el contenido de la biblioteca con un sólo import, en el ejemplo tenemos la inclusión de la biblioteca principal de objetos de Objective C
#import <Foundation/Foundation.h>
Esta biblioteca es la que tiene los objetos de datos principales, podemos consultar las clases desde la página oficial de Apple:
Siempre que necesitemos hacer uso de otra clase en un fichero .m tendremos que hacer referencia al fichero de cabecera .h que defina dicha clase o conjunto de clases.

Función main

Como la función main de C será la encargada de gestionar el flujo principal de nuestra aplicación. Tiene los típicos parámetro de entrada de C, con el número de argumentos y los argumentos de llamada al programa desde línea de comandos y tiene que devolver un número entero como valor de resultado del programa, lo típico. Si vienes de C lo entenderás a la primera. 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        
        // insert code here…
        
    }
    return 0;
}
El @autoreleasepool lo que intenta es definir un entorno para que todas las variables definidas bajo ese entorno, comprendido entre las {} deberán ser liberadas de la memoria según se salga del pool.

ARC

El Automatic Reference Counting es la base de la gestión de la memoria es Objective C. Funciona de una manera distinta a C o Java. el ARC, como lo llamaremos a partir de ahora, lo que trata de hacer es evitar que el programador tenga que manualmente liberar la memoria de todas las variables, a fin de evitar quedarnos sin memoria en el dispositivo o tener memory leaks,  por lo que el programador sólo debe centrarse en reservar la memoria suficiente para los datos a almacenar y de definir que tipo de puntero necesitaremos para apuntar a esa memoria. Aunque este tema lo trataremos con más profundidad en la gestión de variables, podemos adelantar que respecto a ARC tenemos dos tipos de variables, las strong y las weak. Las strong mantendrán en la memoria los datos hasta que nos salgamos de su ámbito de actuación, pero las weak, no liberarán la memoria al salirse de ámbito. Por lo que podríamos considerar que las strong los las poseedoras de los datos en memoria y las weak son meros punteros a la información.  Si se libera una variable weak, no pasa nada, mientras que siga existiendo una strong sobre el dato. Sin embargo si la variable strong es la última que apunta a los datos y ésta sale de ámbito, el dato referenciado se liberará de memoria. 

Trazas

Como en todo lenguaje es posible sacar mensajes con pantalla/consola esto lo realiza la clase NSLog, como puede verse en el ejemplo:
NSLog(@”Hello, World!”);
Como puede verse de trata de la ejecución de una “función” al que se le pasa como parámetro una cadena de caracteres, en este caso utilizamos un literal, pero todos los literales en Objective C van precedidos de una @ y entre “”.
En Este caso saldrá por la consola el mensaje entrecomillado Hello, World!
Y por supuesto como toda sentencia C debemos terminarla con un ;

Conclusiones

Así que tenemos a un lenguaje similar a C con @ a lo anotaciones de Java, Orientado a objetos y con @antes de los literales de cadenas de caracteres, un poco rarito pero funcional.