Uma boa compreensão da iOS SDK é a chave para o desenvolvimento de aplicações nativas. A SDK não te ajuda somente na escolha das ferramentas certas para a solução de um problema, mas te oferece diversas ferramentas para uma melhor performance da aplicação.

Nesse artigo veremos um pouco sobre a arquitetura da iOS SDK e descobrir algumas coisas que estão "sob o capô" dela.

O que é a iOS SDK?

O acrônimo SDK significa Software Development Kit. A iOS SDK contém ferramentas e códigos para desenvolver aplicações nativas, o que significa que a SDK permite o desenvolvimento, instalação, execução e testes das aplicações no iOS Simulator e também nos aparelhos. As duas forças que movem as aplicações nativas são o Objective-C e o sistema nativo de frameworks do iOS.  

O que é uma aplicação nativa para iOS? 

Você já sabe o que é a iOS SDK, mas o que faz uma aplicação ser qualificada como nativa? A resposta é simples, todo aplicativo que roda em um dispositivo iOS é uma aplicação nativa. Mas essa resposta não está completamente correta. Uma aplicação totalmente nativa é aquela desenvolvida usando a linguagem e frameworks nativas no iOS, no caso o Objective-C, Cocoa, entre outras. Pois bem, o que é uma aplicação Cocoa? Esse tipo de aplicação é mais difícil de definir. É a linguagem em que o aplicativo é escrito? Não exatamente. São as ferramentas com que o aplicativo é construído? Não. É possível desenvolver uma aplicação em Cocoa sem utilizar o XCode.

A Apple define uma aplicação Cocoa como uma aplicação:

  1. que é composta por objetos que herdam da classe NSObject, classe root declarada na Foundation Framework;
  2. que é baseada em Objective-C; 

A arquitetura do iOS

Outra diferença entre as aplicações nativas e aplicações web, que rodam no Safari é que as aplicações web não interagem com o sistema operacional (iOS) e seu sistema nativo de frameworks. O sistema operacional atua como um mediador entre a aplicação e os recursos de hardware. A principal vantagem disso é que aplicações nativas não precisam se preocupar com alterações de hardware ou especificações do aparelho. O sistema operacional fornece informações necessárias sobre os recursos de hardware e especificações do dispositivo. 

A arquitetura do iOS é composta por camadas: Cocoa Touch, Media, Core Services e Core OS, como pode ser visto na imagem a seguir:

Essa arquitetura baseada em camadas ilustra o nivel de abstração, onde as camadas de nível mais altos são mais abstratas e as de nível mais baixo são mais fundamentais e intimamente ligadas ao hardware.

A Apple recomenda o uso dos níveis superiores da framework o máximo possível, pois na maioria das vezes são objetos de abstração dos níveis inferiores. Em outras palavras, as camadas de níveis superiores interagem indiretamente com o hardware através das camadas de nível mais baixo, que são mais complexas. 

Camada Cocoa Touch

Cocou Touch é a camada superior da arquitetura do iOS. Ela contém algumas das chaves da framework que as aplicaçòes nativas dependem, como o UIKit. Ela define a infra-estrutura básica do aplicativo, oferecendo uma série de tecnologias vitais, como entradas de multitarefa e eventos de toque na tela. As aplicações nativas do iOS não funcionam se não estiverem ligadas ao UIKit e Foundation framework. O UIKit é adaptado para a plataforma iOS, já que ele é originado da AppKit, usada no desenvolvimento de aplicativos para o OS X. O UIKit provê infra-estrutura para eventos e aplicações gráficas rodarem no iOS. Ele também cuida de outros aspectos centrais, como multitarefa, notificações por push e acessibilidade. 

Camada Media 

Gráficos, áudio e vídeo são renderizados nessa camada. Essa camada contém tecnologias como: Core Graphics, OpelGL ES e OpenAL, AV Foundation, e Core Media. Ela conta ainda com um bom n;uemro de frameworks incluído dentro da Assets Library framework, para acessar fotos e vídeos do aparelho, a Core Imagem framework, para manipulação de imagens e a Core Graphics framework, para desenho em 2D.

Camada Core Services

A camada Core Services é a responsável pela gestão das operaçòes fundamentais que os aplicativos nativos utilizam. Ela provê "features" indispensáveis como Grand Central Dispatch, In-App Purchase, e iCloud Store. Uma das adições mais bem-vindas da camada é a ARC, ou contagem de referência automática. 

ARC - Característica do nível de compilação, introduzida em 2011, quando o iOS 5 foi lançado, que simplifica o gerenciamento de memória em Objective-C.

O gerenciamento de memória é um tópico que precisa ser tratado com muita seriedade, e seus conceitos precisam ser muito bem compreendidos, pois os aparelhos com iOS não possuem um volume muito grande de memória, então a aplicação precisa controlar o uso dela. Uma framework importante dentro da camada Core Services é a Core Fundation framework, pois ela habilita outras frameworks e bibliotecas de compartilha de dados e core.

Camada Core OS

A maioria das funcionalidades fornecidas pelas 3 camadas de n;ivel superior é construída sobre essa camada. Ela fornece diversas frameworks como por exemplo a Secrity framework. Ema encapsula o ambiente do kernel e as interfaces UNIX de baixo nível, que a aplicação não tem acesso por questões de segurança. Muitas características de baixo nível podem ser acessadas diretamente usando a biblioteca Libsystem, que é baseada na linguagem C. Com ela você tem acesso por exemplo a serviços de DNS, threads POSIX entre outros.

Agora que você já conhece um pouco mais sobre a iOS SDK, podemos começar a conhecer o ambiente de desenvolvimento e criar alguns códigos e aplicações. A partir do próximo artigo vamos começar a trabalhar com os componentes para criação de aplicativos.