Desenvolvendo para iOS – Objective C

Se fosse em inglês um título mais apropriado seria ‘iOS Development for dummies’ ou algo assim. Vejamos daonde estamos partindo:

  • não conheço Objective C, mas sei C e várias linguagens orientadas a objeto;
  • nunca desenvolvi para Mac OS, logo não conheço cocoa, carbon e arredores além do ouvir falar e das notícias rápidas de blogs sobre o assunto.

Portanto resolvi partir do início dos inícios falando em desenvolvimento para um determinado stack (linguagem, bibliotecas, plataforma), que é conhecer a linguagem.

A própria Apple tem 2 documentos que recomendo a leitura: Learning Objective-C: A Primer e Introduction to The Objective-C Programming Language (PDF, caso prefira).

Para quem conhece as linguagens interpretadas modernas, Objective C vai lhe parecer familiar: É uma festa de late binding e tipagens fraca e forte convivendo lado a lado com direito a garbage collector (só em mac os, nos iOS ele faz contagem de referências), mas assumindo que você conhece C, vamos a um resumo rápido & rasteiro das novidades:

Sintaxe

Objective-C usa como ponto de partida ANSI C com adendos, e o mesmo costume de se usar arquivos header se mantém: .h para headers, .m para código Objective C, .mm para quando se usar C++ (sim, podemos misturar C++ e ObjC. estranho)

Objetos & Mensagens

Vamos às objC-izisses: em objetos ObjC propriedades não podem ser acessadas externamente, somente seus métodos. Chamar métodos de objetos é chamado de envio de mensagem ou messaging e usa a seguinte sintaxe (chamada bracket sintax):

[objetoInst mensagem];
[objetoInst outramssg: parametro1];
[objetoInst copiarA: parametro1 paraB: parametro2];

No exemplo acima, enviamos 3 mensagens para o objeto objetoInst, a saber, mensagem, outrmssg: e copiarA:paraB:. Uma sintaxe alternativa é a dot sintax:

myAppObject.theArray = aNewArray;

Que é equivalente a [myAppObject setTheArray:aNewArray];. Um detalhe mostrado nesse último caso: como não podemos acessar diretamente as propriedades/variáveis de um objeto isso se faz via acessor methods.

Recomendo ler primeiro o Primer e depois ler o PDF que se aprofunda um pouco mais nos detalhes da linguagem. De qualquer maneira, minha impressão inicial foi bem positiva: o resultado é uma linguagem flexível que pode passear entre quase-python e C à medida da necessidade.

Esse post foi somente um primeiro passo, no futuro veremos declaração de interfaces, implementação, propriedades, Strings e Protocolos.