Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

WorkShop iOS - SECOMP

Aula 01: Objective C, XCode, Cocoa Framework, Views.
by

Tiago Lima

on 11 January 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of WorkShop iOS - SECOMP

Desenvolvimento iOS Aula 01 - Conceitos Objective C Protocolos Data Views Propriedades XCode Variáveis de Instância Variáveis de instância representam um detalhe de implementação, e não devem ser acessadas fora da própria classe. O Objective-C é a linguagem de programação baseada em C, mas adiciona suporte para programação orientada a objetos. É usada para escrever aplicativos para o iOS e Mac OS X. Classes A classe de interface que é normalmente armazenado no arquivo ClassName.h e define as variáveis de instância e métodos públicos.

A implementação está no arquivo ClassName.m e contém o código real para esses métodos. E também muitas vezes é definido métodos privados. Dot Syntax A sintaxe de ponto (.) deve ser utilizado apenas por setters e getters, não por métodos de uso geral. [object method];
[object methodWithInput:input];

output = [object methodWithOutput];
output = [object methodWithInputAndOutput:input]; Introdução Métodos Métodos Em Objective C, um nome de método pode ser dividido em vários segmentos. -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO]; Get´s & Set´s Todas as variáveis de instância, por padrão, são privadas em Objective-C, então você deve usar os acessores para obter e definir valores na maioria dos casos. output = [photo caption];
[photo setCaption:@"Day at the Beach"]; photo.caption = @"Day at the Beach";
output = photo.caption; Ponteiros Criação de Objetos Há duas maneiras para criar um objeto. A primeiro é um estilo mais conveniente e automático. O primeiro segmento é o método alloc. Esta é uma chamada que reserva memória e instancia um objeto.

O segundo segmento é uma chamada para inicialização de um novo objeto. A implementação do init faz-se a construção básica. Quando você declara uma variável associa esta variável com algum espaço em sua memória para armazenar o valor da variável. Um ponteiro é simplesmente um local que contém o endereço da variável. NSString *myString = [NSString string]; Segundo estilo: NSString *myString = [[NSString alloc] init]; Criação de Objetos Todas as variáveis de objetos no Objective-C são tipos de ponteiros. @interface ClassName : ItsSuperclass
{
// Instance variable declarations.
}
@end Você normalmente acessa as propriedades de um objeto (no sentido de seus atributos e relacionamentos) através de um par de métodos (getter / setter). Ao usar métodos de acesso, você está respeitando o princípio de encapsulamento. Propriedades @interface MyClass : NSObject

@property (attributes) type name;

@end Propriedades Atributos ReadWrite: Indica que a propriedade deve ser tratado como leitura / gravação. Este atributo é o padrão (get/set). Readonly: Indica que a propriedade é somente leitura (get). Propriedades Atributos strong: Especifica uma referência forte para manter o objeto. weak: Especifica que existe uma referência fraca para o objecto. Se o objeto de destino é desalocado, o valor da propriedade é automaticamente definido para nulo (nil). assign: Especifica uma atribuição simples. É usado para atributos do tipo primitivo. Atributos Propriedades nonatomic: Em uma aplicação multithread uma mesma variável pode ser chamada com o get e setada ao mesmo tempo, com isso o valor retornado não é garantido, pois o valor setado pode não está 100% copiado para o bloco de memória. Se esse valor já estiver sido recuperado no get, então esse valor retornado será "quebrado". Usando o nonatomic evitamos isso. Por padrão, os acessores são "atomic". Atributos Se você implementar os seus próprios acessores ao invés de usar @synthesize, estas declarações não iram ser úteis, exceto expressa sua intenção de saber se a propriedade é implementada de forma threadsafe. Propriedades Atributos Gerenciamento de Memória Tudo que você tem a fazer é criar um ponteiro (*) para o objeto. Enquanto houver uma variável que aponta para um objeto, este permanece na memória. Quando o ponteiro recebe um novo valor ou deixa de existir, o objeto associado é liberado. Isto para todas as variáveis: variáveis de instância, propriedades sintetizados, e variáveis locais. Gerenciamento de Memória Por padrão, todas as variáveis de instância e variáveis locais são ponteiros "strong". Variáveis que são "weak" ainda podem apontar para objetos, mas eles não se tornam proprietários. Você provavelmente não vai usar muito os ponteiros fracos. Eles são principalmente úteis quando dois objetos têm uma relação pai-filho. O Xcode é um pacote de ferramentas que fornece ao desenvolvedor tudo que precisa para criar ótimas aplicatições para Mac, iPhone e iPad. É totalmente integrado com os frameworks Cocoa e Cocoa Touch, criando um ambiente de desenvolvimento produtivo e fácil de usar. XCode O conjunto de ferramentas do Xcode inclui a IDE (Integrated Development Environment) Xcode, a ferramenta de design Interface Builder e o compilador da Apple LLVM totalmente integrado. XCode Está incluído também um iOS Simulator e ferramentas de análise para ajudá-lo a otimizar sua aplicação e monitorar os vazamentos de memória em tempo real. Padrão de Projeto - MVC No MVC, cada controlador é dono de uma visão e um modelo (dados apresentados pela visão). O Model View Controller separa os aspectos de uma aplicação em três partes distintas e define como se comunicam os três. Conhecendo o XCode Delegate O AppDelegate é um objeto personalizado criado para lidar com as transições de estado dentro do aplicativo. É normalmente usado para executar tarefas na inicialização do aplicativo e no encerramento. UIWindow O UIWindow é uma classe que define os objetos que gerenciam e coordenam a apresentação da View na tela. As principal função de uma Window é proporcionar uma área para a exibição de uma View. A Window é uma "Root View" na hierarquia das Views. Método Principal do AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions Diz o delegate quando a aplicação foi iniciada e pode ter opções adicionais de inicialização. Deve-se usar esse método para inicializar o aplicativo e prepará-lo para Executar. Interface Builder Interface Builder, está integrado com o Xcode como uma ferramenta para criar a interface do usuário para Mac e para aplicativos iOS. Um arquivo NIB é basicamente a versão compilada (binário) de um arquivo XIB que em si é um XML que é gerenciado pelo Interface Builder. File's Owner A função do File´s Owner é tornar possível o elo entre o código da aplicação e do conteúdo do arquivo NIB. Mais especificamente, ele é um Controller Object que é responsável pelo conteúdo da NIB. File's Owner O Owner, muitas vezes, é uma instância da subclasse UIViewController, porque está subclasse já sabe como carregar a NIB e gerenciar a View que ela contém. Tiago Lima Venâncio Actions e Outlets Quando você começar a programar para iOS, você precisa entender o conceito de Outlets (IBOutlet) e Actions (IBAction). O uso das Actions e Outlets são para ligar o seu código aos pontos da View. Actions são eventos e Outlets são como referências dos objetos. Actions e Outlets O identificador IBOutlet é utilizado para objetos que serão usados pelo Interface Builder. O identificador IBAction é usado para sincronizar métodos de ação. Um IBAction é um método que pode manipular eventos gerados pelas Views (por exemplo, quando um botão é clicado). Actions e Outlets Em Objective-C, um protocolo declara uma interface de programação que qualquer classe pode optar por implementar. Um protocolo é um conjunto de métodos, e a classe que define pode optar por implementar um ou mais dos seus métodos. #import <UIKit/UIKit.h>

@interface TableExampleViewController : UIViewController
<UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) NSArray *colorNames;

@end Views As Views e Windows apresentam a interface do usuário do seu aplicativo e lida com as interações. O padrão de design típico iOS é assim: uma Window e muitas Views. Metaforicamente falando, UIWindow é um aparelho de TV, e as UIViews são os atores. Arquitetura UIWindow e UIView Controllers As ViewControllers são objetos controllers no paradigma de programação MVC, e em aplicações iOS possibilitam uma conexão vital entre dados da aplicação e sua aparência visual. Um exemplo comum é uma ViewController que é um tipo de objeto usado para apresentar e controlar um grupo de views. Controllers Quando os dados precisam ser exibidos para o usuário, estas Views se acomodam na maioria dos tipos de mídia. Tabelas, imagens, páginas web, mapas, scrolls, pickers entre outros são todos tratados por objetos desta categoria. Inputs & Values Quando o usuário é obrigado a inserir informações ou fornecer uma escolha. Esses objetos permitem uma variedade de mecanismo de entrada. Dúvidas? tiago@virtual.ufc.br
tiagolimavenancio@gmail.com Tipo ID Ele é geral para qualquer tipo de objeto, independentemente de classe. id anObject; - (id) init
{
if ( self = [super init] )
{
[self setCaption:@"Default Caption"];
[self setPhotographer:@"Default Photographer"];
}
return self;
} Init Podemos criar um método init para definir valores para inicializar as variáveis. UITabBarController UITableViewController UINavigationController UIImageView Inputs & Values Label, Button & TextField copy: Quando a propriedade é informada com "copy", o compilador irá criar uma cópia do objeto, criando assim mais um objeto alocado na memória.
Full transcript