Desenvolvendo para iOS

608 visualizações

Publicada em

by Cesar Müzel G. Filho

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
608
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
35
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvendo para iOS

  1. 1. Desenvolvendo para iOS Cesar Müzel Gonçalves Filho
  2. 2. iPhone o Celular da Apple iPod Telefone Internet Steve Jobs – ex-CEO e cofundador da Apple 2
  3. 3. Objective-C 3
  4. 4. 4
  5. 5. 5
  6. 6. • https://developer.apple.com/programs/ios/ • Apple ID • Xcode • Objective-C 6
  7. 7. Anatomia de um Aplicativo iOS O que um artista precisa para trabalhar O que um programador precisa para trabalhar Tela TintaPincel Janela ImplementaçãoCabeçalho 7
  8. 8. Objective-C Interface (Cabeçalho) Implementação 8
  9. 9. Interface @interface ContaBancaria : NSObject { float balanco; NSString *nomeDoDono; } - (float) sacar:(float)quantidade; - (void) depositar:(float)quantidade; @end 9
  10. 10. Implementação #import "ContaBancaria.h" @implementation ContaBancaria - (id) init { self = [super init]; return self; } - (float) sacar:(float)quantidade { // calcula quantidade a sacar return quantidade; } - (void) depositar:(float)quantidade { // somar quantidade ao valor da conta } @end 10
  11. 11. Criando Objetos Jeito Java: ContaBancaria conta = new ContaBancaria(); Jeito Objective-C: ContaBancaria *conta = [[ContaBancaria alloc] init]; 11
  12. 12. Privilégios de Acesso @protected (padrão) @public @private Exemplo: @public NSString *nome; 12
  13. 13. Privilégios de Acesso Acessar atributos das classes: conta->numeroDaConta = 570; conta->nomeDoDono = @”Pedro Cardoso”; 13
  14. 14. Tipos de Métodos / Funções ( - ) Métodos de Instância (dos objetos) ( + ) Métodos de Classe (estáticos) Não precisam que a classe seja instanciada 14
  15. 15. Mensagens Métodos não são chamados. Mensagens são enviadas a eles. Exemplo: [ContaBancaria verificarLimite] método estático ContaBancaria *conta; [conta depositar: 200.00]; [conta transferir: 120 paraContaDe: @”José da Silva”]; 15
  16. 16. Mensagens Opção: Alocar classe e chamar o método ao mesmo tempo. Não usar uma linha só com mais de 3 ações para não dificultar o entendimento do código. NSString *str = [[NSString alloc] initWithString:@”Hello”]; Init funciona como método construtor. 16
  17. 17. Propriedades e Encapsulamento Propriedades permitem a você expor os campos de sua classe, assim você pode controlar como os valores são definidos e retornados. GETTERS & SETTERS ACCESSORS & MUTATORS 17
  18. 18. Propriedades e Encapsulamento @interface Carro { <propriedades> } - (float) aceleracao; get - (void) setAceleracao: (float) valor; set - (NSString *) marca; get - (void) setMarca: (NSString *) nome; set <métodos> @end 18
  19. 19. Propriedades e Encapsulamento - (float) aceleracao { return aceleracao; } - (void) setAceleracao: (float) valor { aceleracao = valor; } - (NSString *) marca{ return marca; } - (void) setMarca: (NSString *) nome { [nome retain]; [marca release]; marca = nome ; } 19 Gerenciamento de memória
  20. 20. Propriedades e Encapsulamento @interface Carro { <propriedades> } @property float aceleracao; @property (retain) NSString *nomeDoDono; @property (readonly) NSString *marca; <métodos> @end 20
  21. 21. Propriedades e Encapsulamento //Carro.m ... @implementation Carro @synthesize aceleracao; @synthesize nomeDoDono; @synthesize marca; ... @end 21
  22. 22. Propriedades e Encapsulamento Acessando as propriedades [carro setAceleracao: 5.0f]; [carro setNomeDoDono: @”João”]; [carro aceleracao]; [carro nomeDoDono]; NSLog([carro aceleracao]); NSLog([carro nomeDoDono]); 22 Accessors Mutators
  23. 23. Initializers / Construtores • Para criar diversos inicializadores é necessário defini-los no cabeçalho (ex.: carro.h). - (id) initComMarca: (NSString *) nome; - (id) initComMarca: (NSString *) nome eAceleracao: (float) valor; 23
  24. 24. Initializers / Construtores Implementação - (id) initComMarca: (NSString *) nome eAceleracao: (float) valor { marca = nome; aceleracao = valor; return self; } - (id) initComMarca : (NSString *) nome { return [self initComMarca: nome eAceleracao: 0.0f]; } 24
  25. 25. Initializers / Construtores Instanciar e Inicializar Carro *mustang [[Carro alloc] initComMarca: @”Ford”]; 25
  26. 26. Gerenciamento de Memória Garbage Colletor: Remove objetos que não estão sendo mais utilizados liberando espaço em memória. Até o IOS 4.0 não havia suporte ao G.C. Então o desenvolvedor precisava manualmente alocar e desalocar a memória dos objetos que deixassem de ser utilizados. 26
  27. 27. Reference Counting R.F é um contador para cada objeto. +1 -> Quando o objeto é criado (alloc, new) -1 -> Quando o objeto é desalocado (release) Quando o contador chega a 0(Zero), a memória associada é liberada para o SO. 27
  28. 28. Reference Counting Exemplo: NSString *str = [[NSString alloc] init]; +1 ou NSString *str = [[NSString new]; +1 NSString *str2 = str; +1 [str release]; -1 [str2 release]; -1 28
  29. 29. Autorelease • Também conhecido como Convenience Method • São objetos cujo “dono não é você”. Tem o release feito automaticamente após um tempo. 29
  30. 30. Autorelease Convenience Method NSString *str [NSString format:@”%d”, 2]; [str autorelease]; NSLog(str); Uma vez dado o autorelease não é mais possível fazer release. 30
  31. 31. Dealloc Muitas vezes os valores das propriedades ficam retidos devido ao uso da diretiva @property. No método dealoc liberamos a memória. - (void) dealoc { [self.name release]; [super dealloc]; } O dealoc é sempre chamado quando a contagem de referências chegar a zero. 31
  32. 32. Desenvolvendo para iOS Cesar Müzel Gonçalves Filho

×