Publicado por: webclaudio | 24/03/2009

Curso de programação para IPHONE – Parte 6

titelementossintaxe2

Olá… Neste artigo vamos conhecer um pouco do iPhoneOS seu principais recursos e principalmente suas limitações. Conhecer estas limitações é importantíssimo para evitar o eventual desligamento de sua aplicação pelo Apple App Killswitch (Espécie de guarda que desliga uma aplicação que esteja consumindo muitos recurso).

A ANATOMIA DO IPHONEOS

O Framework do iPhoneOs é dividido em quatro grandes camadas, como mostrado na figura. Cada uma destas camadas contém uma variedade de frameworks que você pode ter acesso ao escrever programas no iPhone SDK. Geralmente, você deve preferir uma camada de alto nível quando você estiver codificando (os indicados em direção ao topo do diagrama).

camadasiphoneosCocoa Touch é o framework que você deve se tornar mais familiarizado. Contém o framework UIKit e é nele que passaremos mais de 90 % deste curso.  A framework UIKit inclui suporte a “Window”,  suporte a eventos e suporte a gerenciamento de interfaces de usuário, e permite que você crie texto e páginas de web. Ele ainda funciona como sua interface com o acelerômetro , a câmera, a biblioteca de fotos, e informações específicas de cada dispositivo.

Media é o lugar onde você pode ter acesso aos principais protocolos de áudio e vídeo embutido no iPhone. Existem quatro tecnologias gráficas presentes: OpenGL ES, EAGL (que liga
objetos OpenGL para a sua “window” nativa), quartzo (que é uma engine da Apple baseado em desenho vectorial), e o Core Animation (que também é construída sobre Quartz). Outros frameworks
dignos de nota incluem Core Audio, Open Audio Library, e Media Player.

Core Services oferece os frameworks utilizados em todas as aplicações. Muitos deles são dados  conexos, tais como o interno Address Book framework. Core Services inclui também a  critical Foundation framework, o que inclui as principais definições dos tipos de dados orientados a objeto da Apple, tais como as suas matrizes e conjuntos.

Core OS inclui o kernel-level software. Você pode acessar threading, arquivos, rede, I/O, e memória.

A HIERARQUIA DOS OBJETOS DO IPHONE

Dentro desses frameworks você será hábil para acessar a uma imensa riqueza das classes que estão dispostos em uma enorme hierarquia. Você verá muitas destas classes  utilizadas em todo este curso. Na Figura abaixo mostro muitas das classes que vamos usar ao longo dos vários artigos, organizados em hierarquia. Eles são apenas uma fração do que está disponível. Conforme mostrado na figura, os objetos que tem tem maior probabilidade de uso estão divididos em duas categorias gerais.

classesiphoneos

AS CLASSES NS

As classes NS provêm do Core Services Foundation framework (um Cocoa equivalente do Core Foundation framework), que contém um grande número de tipos de dados fundamentais e de outros objetos. Você deve usar as classes fundamentais do Cocoa como NSString e NSArray sempre que você puder. Isto porque eles tendem a se dar muito bem uns com os outros e com o framework UIKit, e portanto, é menos provável que você encontre erros bizarros. Apesar de não ser mostrado, NSNumber é outra classe que você deve usar sempre. Deve ser o seu principal objeto numérico quando você estiver fazendo qualquer tipo de trabalho complexo com números. Pode ser utilizada para reter muitos tipos de valores numéricos, flutuantes, inteiros e mais.  Os objetos que podem conter coleções de valores são NSArray (um array numérico) e NSDictionary (um array associativo). Somente estes insteressam mais nas classes NS.

AS CLASSES UI

A segunda categoria geral de classes contém as classes UI. Estes vêm do Cocoa Touch do framework do UIKit. Ela inclui todos os objetos gráficos que você usa, bem como todas as funcionalidades para o iPhone OS event model, muitos deles aparecem no UIResponder. Mas este é um outro tema que vamos voltar em breve.

WINDOWS E VIEWS

Como as classes IU demonstram, o iPhoneOS é profundamente enraizada na ideia de uma interface gráfica de usuário. Por isso, vamos terminar nossa introdução do iPhoneOS examinando algumas das principais abstrações gráfico embutidas no UIKit. Existem três abstrações principais: Windows, Views, e view controllers.  Um Window é algo que toma toda a tela do iPhone. Há apenas um deles para a sua aplicação, e é o recipiente para tudo o que a sua aplicação mostrar.  Um View é o conteúdo real mostrado na sua tela. Você pode ter vários deles, cada um abrangendo diferentes partes do Window (Janela)  ou fazendo coisas diferentes em tempos diferentes. Eles são todos derivados da classe UIView. No entanto, não basta pensar em um view como um recipiente vazio.

Atualmente, praticamente qualquer objeto que você usar a partir do UIKit será uma subclasse do UIView que apresenta uma grande quantidade de comportamentos herdados de si mesmo. Entre as grandes subclasses de UIView são UIControls, que lhe dará botões, cursores, e outros itens que os usuários podem manipular o seu programa com, e UIScrollableViews, que fornecerá aos usuários o acesso ao texto que não pode aparecer mais de uma vez. Um View controller faz o que seu nome sugere. Ela atua como o elemento controlador do modelo MVC e no processo de gerenciamento de telas cheias de texto, que é às vezes chamado por um view. Como tal, ele cuida de eventos e de actualização para o seu view.  Neste curso, dividimos os view controllers  em dois tipos.
View Controllers Básicos  são aqueles que apenas gerenciam telas de texto (como o tab bar controller), enquanto view controllers avançados são aqueles que permitem que um usuário se desloque entre as várias páginas de texto (tais como o navigation bar controller e o tab bar controller). A figura abaixo mostra como esses três tipos de objetos interrelacionem.

iphoneosiphone

Windows, views, e view controllers são, em última análise, parte de uma visão hierarquia. Esta é uma árvore de objetos que começa com o Window na sua raiz. Um programa simples pode apenas ter um Window com um view nela. A maioria dos programas terá início com um Window, um view e um view controlller em que, talvez apoiados por view controllers adicionais, controlam views que deveraão ter os seus próprios subviews. Iremos descrever este conceito mais claramente nos próximos artigos, quando começarmos a olhar para a visualização básica de controladores. Até lá …


Respostas

  1. Cláudio, parabéns. A dificuldade minha em aprender o Objective-C está sendo suprida por você. Peguei minhas apostilas e cursos completos, mas todos em inglês. Seus artigos estão ótimos. Continue assim. E estou ancioso aguardando novos posts. Valeu.

    • Valeu André. Só me desculpe pela demora nos posts, mas o trabalho aumentou muito ultimamente. Criei este Blog justamente para pessoas como você e eu que não encontrávamos material traduzido sobre o assunto. Agradeço o incentivo. Abraços.

  2. voce estaria interessado em ministrar um curso particular?

    • Oi Reinaldo. Aulas particulares demandariam tempo e profundo conhecimento no assunto. E as duas coisas eu não tenho. A maioria das informações que paço para vocês são de livros e apostilas que tento traduzir da internet. Estou numa espécie de aprendizado ensinando. Então não me intitulo ainda como programador para iphone muito menos tutor. Minha formação é toda em .NET e trabalho com isso. Já sei bastante coisa mas não me atreveria a cobrar por isso. De hoje em diante vamos avançar muito, fique ligado. Abraços.

  3. Olá webclaudio.Gostaria de dar os parabéns pela iniciativa de criar esse tutorial. Faz um bom tempo que estava em busca de um, e gostei muito desse por ser tão completo!!!Abraços.

    • Valeu Martim. Estou conversando com amigos que desenvolvem comigo para também escreverem post’s e enriquecer este curso. Do capitulo 8 em diante vamos meter mais a mão na massa. Abraços.

  4. Caro Claudio,

    parabéns pelo seu curso! estou com alguma dúvidas…

    1) Por que tenho que declarar métodos e classes, sendo que imagino que estes já, na grande maioria, vem no próprio SDK?

    2) O que quer dizer quando você fala que o método pode ser usado apenas por uma instância de um objeto?

    3) o que significa dizer instanciar um objeto de uma classe?

    Desculpa o nível das perguntas!

    Valeu.

    • Fala Rodrigo, respondendo suas perguntas:
      1) Por que tenho que declarar métodos e classes, sendo que imagino que estes já, na grande maioria, vem no próprio SDK?
      As Classes e métodos contidos no SDK, modelam apenas as características dos dispositivos e as preparam para fazer alguma coisa. Agora quem definirá o que ele vai fazer será você. E a forma utilizada para fazer isso na “Oritentação a Objeto” é através de métodos (Como as antigas functions e procedures) agrupando os que tenham as mesmas características em regiões chamadas Classes.

      2 e 3) O que quer dizer quando você fala que o método pode ser usado apenas por uma instância de um objeto?
      Como regra da “OO” para você utilizar um método de uma classe, você deve instanciá-lo. Imagine que uma classe é apenas uma receita de bolo no papel, ele não existe ainda fisicamente. Quando você instancia uma classe você passa a ter fisicamente (na memória do computador) a sua classe podendo acessar os seus métodos. É possivel acessar métodos de classe sem instanciá-los, mas os métodos deverão ser do tipo Static.

  5. Cláudio. Parabéns! Seu curso está sendo de grande ajuda.


Deixar mensagem para Martin S. Cancelar resposta

Categorias