tdc 2012 - trilha ios -...

23
TDC 2012 - Trilha iOS José Renato Pequeno Gerenciamento de Memória ARC & Saturday, July 14, 12

Upload: phamkhanh

Post on 26-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

José Renato Pequeno

Gerenciamento de Memória

ARC

&

Saturday, July 14, 12

Page 2: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOSZé Pequeno

Saturday, July 14, 12

Page 3: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Cidade de DeusZé Pequeno

Saturday, July 14, 12

Page 4: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Memória de execução

Memórias

Memória de armazenamento

Saturday, July 14, 12

Page 5: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 6: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 7: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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 do s ap licat i vo s armazena dos na memór ia de armazenamento.

Saturday, July 14, 12

Page 8: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOSMemó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

Page 9: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Memory Management

Manual Reference Counting / Manual Retain Release

Automatic Reference Counting

Saturday, July 14, 12

Page 10: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 11: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 12: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 13: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 14: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 15: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 16: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 17: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Memory Management

Manual Reference Counting

Cuidado ao utilizar o release

Pessoa *p = [[Pessoa alloc] init] ... [p release];

... p.nome = @”Zé Pequeno”;

Saturday, July 14, 12

Page 18: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Memory Management

Manual Reference Counting

Autorelease

Pessoa *p = [[Pessoa alloc] init] ... [p autorelease];

... p.nome = @”Zé Pequeno”;

Saturday, July 14, 12

Page 19: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 20: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 21: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 22: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

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

Page 23: TDC 2012 - Trilha iOS - 2thinkers.com2thinkers.com/tdc2012/Gerenciamento-de-Memoria-e-ARC-Jose-Renato... · Memória de execução - RAM Memória volátil, cara e rápida responsável

TDC 2012 - Trilha iOS

Obrigado

@javalittle

http://br.linkedin.com/pub/josé-renato-pequeno/28/524/244

http://javalittle.blogspot.com.br/

[email protected]

www.quaddro.com.br www.soaexpert.com.br

www.impacta.com.br

Saturday, July 14, 12