SlideShare uma empresa Scribd logo
Desenvolvendo
para iOS
Cesar Müzel Gonçalves Filho
iPhone o Celular da Apple
iPod
Telefone
Internet Steve Jobs – ex-CEO e
cofundador da Apple
2
Objective-C
3
4
5
• https://developer.apple.com/programs/ios/
• Apple ID
• Xcode
• Objective-C
6
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
Objective-C
Interface
(Cabeçalho)
Implementação
8
Interface
@interface ContaBancaria : NSObject {
float balanco;
NSString *nomeDoDono;
}
- (float) sacar:(float)quantidade;
- (void) depositar:(float)quantidade;
@end
9
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
Criando Objetos
Jeito Java:
ContaBancaria conta = new ContaBancaria();
Jeito Objective-C:
ContaBancaria *conta = [[ContaBancaria alloc] init];
11
Privilégios de Acesso
@protected (padrão)
@public
@private
Exemplo:
@public NSString *nome;
12
Privilégios de Acesso
Acessar atributos das classes:
conta->numeroDaConta = 570;
conta->nomeDoDono = @”Pedro Cardoso”;
13
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
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
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
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
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
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
Propriedades e
Encapsulamento
@interface Carro {
<propriedades>
}
@property float aceleracao;
@property (retain) NSString *nomeDoDono;
@property (readonly) NSString *marca;
<métodos>
@end
20
Propriedades e
Encapsulamento
//Carro.m
...
@implementation Carro
@synthesize aceleracao;
@synthesize nomeDoDono;
@synthesize marca;
...
@end
21
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
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
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
Initializers / Construtores
Instanciar e Inicializar
Carro *mustang [[Carro alloc] initComMarca: @”Ford”];
25
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
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
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
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
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
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
Desenvolvendo
para iOS
Cesar Müzel Gonçalves Filho

Mais conteúdo relacionado

Destaque

Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguaje
g_torrealba
 
Nuevo presentación de microsoft power point
Nuevo presentación de microsoft power pointNuevo presentación de microsoft power point
Nuevo presentación de microsoft power point
66racosta
 
Alemania
AlemaniaAlemania
Alemania
MiguelCanales
 
5 aroma1
5 aroma15 aroma1
El grabado
El grabado El grabado
Poema para Mães
Poema para MãesPoema para Mães
Poema para Mães
Seduc MT
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
anabfernandez
 
04. manipulando dados
04. manipulando dados04. manipulando dados
04. manipulando dados
rafael-goncalves
 
01 tallerdefrutas
01 tallerdefrutas01 tallerdefrutas
01 tallerdefrutas
CENMA Salud
 
Experiencias de enseñanzas
Experiencias de enseñanzasExperiencias de enseñanzas
Experiencias de enseñanzas
LORENAYULI
 
Calidad
CalidadCalidad
Calidad
mdiaz889
 
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
Luciana Melo
 
CV
CVCV
Colexio
ColexioColexio
Colexio
toudan
 
2011 Antal International Global PresentationespañOl
2011  Antal International  Global PresentationespañOl2011  Antal International  Global PresentationespañOl
2011 Antal International Global PresentationespañOl
ysitko
 
Naturaleza
NaturalezaNaturaleza
Naturaleza
david2799
 
El puercoespín mimoso·
El puercoespín mimoso·El puercoespín mimoso·
El puercoespín mimoso·
maaruchitta
 
Amplo
AmploAmplo
Alternativas software-libre vs Privado
Alternativas software-libre vs PrivadoAlternativas software-libre vs Privado
Alternativas software-libre vs Privado
grupocisnerino
 

Destaque (20)

Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguaje
 
Nuevo presentación de microsoft power point
Nuevo presentación de microsoft power pointNuevo presentación de microsoft power point
Nuevo presentación de microsoft power point
 
Alemania
AlemaniaAlemania
Alemania
 
5 aroma1
5 aroma15 aroma1
5 aroma1
 
El grabado
El grabado El grabado
El grabado
 
Poema para Mães
Poema para MãesPoema para Mães
Poema para Mães
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 
04. manipulando dados
04. manipulando dados04. manipulando dados
04. manipulando dados
 
01 tallerdefrutas
01 tallerdefrutas01 tallerdefrutas
01 tallerdefrutas
 
Experiencias de enseñanzas
Experiencias de enseñanzasExperiencias de enseñanzas
Experiencias de enseñanzas
 
Calidad
CalidadCalidad
Calidad
 
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
3o teste de_l.p._7o_ano_-_o_cavaleiro_da_dinamarca
 
CV
CVCV
CV
 
Colexio
ColexioColexio
Colexio
 
2011 Antal International Global PresentationespañOl
2011  Antal International  Global PresentationespañOl2011  Antal International  Global PresentationespañOl
2011 Antal International Global PresentationespañOl
 
Naturaleza
NaturalezaNaturaleza
Naturaleza
 
Leme santa casa
Leme santa casaLeme santa casa
Leme santa casa
 
El puercoespín mimoso·
El puercoespín mimoso·El puercoespín mimoso·
El puercoespín mimoso·
 
Amplo
AmploAmplo
Amplo
 
Alternativas software-libre vs Privado
Alternativas software-libre vs PrivadoAlternativas software-libre vs Privado
Alternativas software-libre vs Privado
 

Semelhante a Desenvolvendo para iOS

Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
André Espeiorin
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOS
Andrei Rosseti
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
Suelen Silva
 
OOP ObjC
OOP ObjCOOP ObjC
OOP ObjC
Jorge Cardoso
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
thomasdacosta
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
rodrigoareis
 
IOS API
IOS APIIOS API
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
Denis L Presciliano
 
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Makoto Miyagawa
 
Aplicações móveis multi-plataforma com Titanium - Geek Night
Aplicações móveis multi-plataforma com Titanium - Geek NightAplicações móveis multi-plataforma com Titanium - Geek Night
Aplicações móveis multi-plataforma com Titanium - Geek Night
Eric Cavalcanti
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
Ricardo Valeriano
 
Sua primeira app iOS
 Sua primeira app iOS Sua primeira app iOS
Sua primeira app iOS
Ricardo Valeriano
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
Saulo Arruda
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zero
Eduardo Shiota Yasuda
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Ricardo Valeriano
 
Python Para Maemo
Python Para MaemoPython Para Maemo
Python Para Maemo
Osvaldo Santana Neto
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
Alamo Saravali
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Campus Party Brasil
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
Daniel Passos
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Rafael T. C. Soares (tuelho)
 

Semelhante a Desenvolvendo para iOS (20)

Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOS
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
OOP ObjC
OOP ObjCOOP ObjC
OOP ObjC
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
IOS API
IOS APIIOS API
IOS API
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
 
Aplicações móveis multi-plataforma com Titanium - Geek Night
Aplicações móveis multi-plataforma com Titanium - Geek NightAplicações móveis multi-plataforma com Titanium - Geek Night
Aplicações móveis multi-plataforma com Titanium - Geek Night
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
 
Sua primeira app iOS
 Sua primeira app iOS Sua primeira app iOS
Sua primeira app iOS
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zero
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
 
Python Para Maemo
Python Para MaemoPython Para Maemo
Python Para Maemo
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
 

Último

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
2m Assessoria
 

Último (10)

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
 

Desenvolvendo para iOS