Desenvolvendo para iOS – para quem vem do desktop

Desenvolver para iPhone está longe de ser “só tenho que aprender Objective C e as libs usadas”. Principalmente se você já tem uma experiência anterior de desenvolvimento GUI para o desktop, um conjunto bem grande de conceitos que você nem mais pensava neles e os tinha por padrão são alterados, todo um novo ambiente para se acostumar. Claro que se você já tem experiência mobile muito disso já é velho conhecido seu (como eu descobri conversando sobre isso com o EPX, Symbian tem muitas limitações parecidas). Vou dar alguns exemplos de “esquisitisses” que encontrei no iPhone para quem vem do desktop:

  • Não há swap file, sem chance de memória virtual maior que a memória física. OUT OF MEMORY Handler no iOS é reboot(), não tem o que fazer.
  • iOS-específico: as aplicações tem um screenshot da primeira window mostrada, que é carregada e mostrada, para daí se proceder à carga da aplicação, para gerar no usuário a (falsa) impressão de “carregou instantaneamente”. Segundo o epx o caminho do screenshot é “application.app/resources/171/screenshot.png” :)
  • iPhone compila suas aplicações em um instruction set reduzido (16 bits)  de ARM, chamado THUMB para economizar memória (normalmente 35% de economia), performance de ponto flutuante é o que mais sofre, segundo a documentação.
  • Existe um sinal enviado pelo S.O. à aplicações para liberação cooperativa de memória (applicationDidReceiveMemoryWarning no delegate, didReceiveMemoryWarning em sub-classes de UIViewController, e UIApplicationDidReceiveMemoryWarningNotification notification). Safari, por exemplo, apaga caches e visualizações de tabs off-screen.
  • Leia o HIG (Human Interface Guidelines, para quem não conhecia o acrônimo), leia o HIG, leia o HIG. Muita coisa lá já foi pensada e mastigada para que você, desenvolvedor newbie como eu em plataformas mobile não tenha que sofrer re-inventando a roda ou fazendo a versão desktop socada na tela minúscula do telefone da sua aplicação. Mais uma vez, leia o HIG: iPhone Human Interface Guidelines.
  • Ironicamente, mesmo com toda essa limitação (a maior delas sendo memória, até agora), temos um hardware extremamente poderoso dentro do iphone, e olhe que nem estou falando do iphone 4 e sim do 3GS: O que eu já vi esse celular fazendo com openGL é algo fantástico.