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):
<br /> [objetoInst mensagem];<br /> [objetoInst outramssg: parametro1];<br /> [objetoInst copiarA: parametro1 paraB: parametro2];<br />
No exemplo acima, enviamos 3 mensagens para o objeto objetoInst, a saber, mensagem
, outrmssg:
e copiarA:paraB:
. Uma sintaxe alternativa é a dot sintax:
<br /> myAppObject.theArray = aNewArray;<br />
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.