O documento discute sobre gerenciamento de memória no iOS, incluindo memória de armazenamento, memória de execução e as abordagens de referência manual e automática no iOS. Apresenta os conceitos de referência manual, propriedade de objetos, ciclo de referência e como o ARC automatiza o processo de gerenciamento de memória.
3. TDC 2012 - Trilha iOS
Cidade de Deus
Zé Pequeno
Saturday, July 14, 12
4. TDC 2012 - Trilha iOS
Memória de execução
Memórias
Memória de armazenamento
Saturday, July 14, 12
5. TDC 2012 - Trilha iOS
Memórias
Memória de armazenamento
Utilizada para armazenar aplicativos, imagens, sons.
Não são voláteis, ou seja, essa memória, mantém as
informações mesmo com o dispositivo desligado ou sem
bateria.
Saturday, July 14, 12
6. TDC 2012 - Trilha iOS
Memórias
Memória de armazenamento iPhone & iPad
Os iDevices da Apple possuem atualmente memória de
armazenamento com 16, 32 e 64 GB.
Saturday, July 14, 12
7. TDC 2012 - Trilha iOS
Memórias
Memória de execução - RAM
Memória volátil, cara e rápida responsável pela execução
dos aplicativos ar mazena dos na m emór ia de
armazenamento.
Saturday, July 14, 12
8. TDC 2012 - Trilha iOS
Memórias
Memória de execução - RAM
Embora não seja divulgado pela APPLE, sabe-se que
iPhone 4S e o iPad 2, possuem 512 MB de memória RAM.
O iPad 3, possui aproximadamente 1GB.
Saturday, July 14, 12
10. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting / Manual Retain
Release
Classe NSObject -> Implementa um recurso chamado
Reference Counting para o gerenciamento de memória
através do uso de mensagens retain e release para o
gerenciamento da alocação de memória dos objetos.
Saturday, July 14, 12
11. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Quando um objeto é criado,
Pessoa *p = [[Pessoa alloc] init];
a mensagem alloc inicia a contagem de referências desse
objeto na memória.
Saturday, July 14, 12
12. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Após a utilização do objeto, deve-se liberá-lo através de
uma mensagem release.
Pessoa *p = [[Pessoa alloc] init];
.....
[p release];
Saturday, July 14, 12
13. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Pessoa *p = [[Pessoa alloc] init];
.....
[p release];
O release, diminui em um a contagem de referência.
Quando a contagem de referência chega a zero, o objeto
é desalocado da memória.
Saturday, July 14, 12
14. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Object Ownership
É o conceito de escopo de acesso a um objeto. Em um
programa, um objeto pode ser utilizado por um ou vários
agentes de código que passam a possuir o objeto.
Ao possuir um objeto, um agente deve pedir a
propriedade desse objeto através de uma mensagem
retain.
Saturday, July 14, 12
15. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Ciclo de Reference Counting de um objeto
. Objeto criado (alloc/new/copy), retain count de 1
. Pode-se pedir a propriedade de um objeto usando o um
retain
. Objetos que não são mais utilizados, devem ser
liberados através de um release
Saturday, July 14, 12
16. TDC 2012 - Trilha iOS
Memory Management
Manual Reference Counting
Ciclo de Reference Counting de um objeto
. Quando o retain count de um objeto chegar a zero, o
objeto é desalocado da memória através do método
dealloc.
Saturday, July 14, 12
19. TDC 2012 - Trilha iOS
Memory Management
Automatic Reference Counting
Com o Automatic Reference Counting, disponibilizado pela
Apple com o iOS 5, o desenvolvedor não precisa mais se
preocupar em explicitamente controlar a posse dos
objetos através de retain/release.
Ao contrário do que alguns estejam pensando, isso não é
o mesmo que o Garbage Collector implementado por
outras tecnologias.
Saturday, July 14, 12
20. TDC 2012 - Trilha iOS
Memory Management
Automatic Reference Counting
A utilização do ARC é opcional em um projeto e caso seja
utilizado fará com que o código seja analisado em tempo
de compilação adicionando-se os necessários retains e
releases.
Saturday, July 14, 12
21. TDC 2012 - Trilha iOS
Memory Management
Automatic Reference Counting
É possível fazer a conversão de aplicações criadas com o
SDK 4 para o SDK 5 tirando proveito assim da utilização
do ARC. No xCode 4.x.x, existe uma ferramenta específica
para esta conversão.
Saturday, July 14, 12
22. TDC 2012 - Trilha iOS
Memory Management
Automatic Reference Counting
Para se utilizar o ARC em um projeto, basta no momento
de criar o projeto, selecionar a opção
Saturday, July 14, 12