Desenvolvendo para iOS
date post
05-Dec-2014Category
Technology
view
632download
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