Desenvolvendo para iOS

Click here to load reader

download Desenvolvendo para iOS

of 32

  • date post

    05-Dec-2014
  • Category

    Technology

  • view

    632
  • download

    0

Embed Size (px)

description

by Cesar Müzel G. Filho

Transcript of Desenvolvendo para iOS

  • 1. Desenvolvendo para iOS Cesar Mzel Gonalves Filho
  • 2. iPhone o Celular da Apple iPod Telefone Internet Steve Jobs ex-CEO e cofundador da Apple 2
  • 3. Objective-C 3
  • 4. 4
  • 5. 5
  • 6. https://developer.apple.com/programs/ios/ Apple ID Xcode Objective-C 6
  • 7. Anatomia de um Aplicativo iOS O que um artista precisa para trabalhar O que um programador precisa para trabalhar Tela TintaPincel Janela ImplementaoCabealho 7
  • 8. Objective-C Interface (Cabealho) Implementao 8
  • 9. Interface @interface ContaBancaria : NSObject { float balanco; NSString *nomeDoDono; } - (float) sacar:(float)quantidade; - (void) depositar:(float)quantidade; @end 9
  • 10. Implementao #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. Criando Objetos Jeito Java: ContaBancaria conta = new ContaBancaria(); Jeito Objective-C: ContaBancaria *conta = [[ContaBancaria alloc] init]; 11
  • 12. Privilgios de Acesso @protected (padro) @public @private Exemplo: @public NSString *nome; 12
  • 13. Privilgios de Acesso Acessar atributos das classes: conta->numeroDaConta = 570; conta->nomeDoDono = @Pedro Cardoso; 13
  • 14. Tipos de Mtodos / Funes ( - ) Mtodos de Instncia (dos objetos) ( + ) Mtodos de Classe (estticos) No precisam que a classe seja instanciada 14
  • 15. Mensagens Mtodos no so chamados. Mensagens so enviadas a eles. Exemplo: [ContaBancaria verificarLimite] mtodo esttico ContaBancaria *conta; [conta depositar: 200.00]; [conta transferir: 120 paraContaDe: @Jos da Silva]; 15
  • 16. Mensagens Opo: Alocar classe e chamar o mtodo ao mesmo tempo. No usar uma linha s com mais de 3 aes para no dificultar o entendimento do cdigo. NSString *str = [[NSString alloc] initWithString:@Hello]; Init funciona como mtodo construtor. 16
  • 17. Propriedades e Encapsulamento Propriedades permitem a voc expor os campos de sua classe, assim voc pode controlar como os valores so definidos e retornados. GETTERS & SETTERS ACCESSORS & MUTATORS 17
  • 18. Propriedades e Encapsulamento @interface Carro { } - (float) aceleracao; get - (void) setAceleracao: (float) valor; set - (NSString *) marca; get - (void) setMarca: (NSString *) nome; set @end 18
  • 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 memria
  • 20. Propriedades e Encapsulamento @interface Carro { } @property float aceleracao; @property (retain) NSString *nomeDoDono; @property (readonly) NSString *marca; @end 20
  • 21. Propriedades e Encapsulamento //Carro.m ... @implementation Carro @synthesize aceleracao; @synthesize nomeDoDono; @synthesize marca; ... @end 21
  • 22. Propriedades e Encapsulamento Acessando as propriedades [carro setAceleracao: 5.0f]; [carro setNomeDoDono: @Joo]; [carro aceleracao]; [carro nomeDoDono]; NSLog([carro aceleracao]); NSLog([carro nomeDoDono]); 22 Accessors Mutators
  • 23. Initializers / Construtores Para criar diversos inicializadores necessrio defini-los no cabealho (ex.: carro.h). - (id) initComMarca: (NSString *) nome; - (id) initComMarca: (NSString *) nome eAceleracao: (float) valor; 23
  • 24. Initializers / Construtores Implementao - (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. Initializers / Construtores Instanciar e Inicializar Carro *mustang [[Carro alloc] initComMarca: @Ford]; 25
  • 26. Gerenciamento de Memria Garbage Colletor: Remove objetos que no esto sendo mais utilizados liberando espao em memria. At o IOS 4.0 no havia suporte ao G.C. Ento o desenvolvedor precisava manualmente alocar e desalocar a memria dos objetos que deixassem de ser utilizados. 26
  • 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 memria associada liberada para o SO. 27
  • 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. Autorelease Tambm conhecido como Convenience Method So objetos cujo dono no voc. Tem o release feito automaticamente aps um tempo. 29
  • 30. Autorelease Convenience Method NSString *str [NSString format:@%d, 2]; [str autorelease]; NSLog(str); Uma vez dado o autorelease no mais possvel fazer release. 30
  • 31. Dealloc Muitas vezes os valores das propriedades ficam retidos devido ao uso da diretiva @property. No mtodo dealoc liberamos a memria. - (void) dealoc { [self.name release]; [super dealloc]; } O dealoc sempre chamado quando a contagem de referncias chegar a zero. 31
  • 32. Desenvolvendo para iOS Cesar Mzel Gonalves Filho