Como usar seu para-quedas
Caso você caia no mundo de iOS
Isso não é
um para-
quedas, é uma
maçã! Fuuu
Wednesday, July 10, ...
Oi!
Hanneli (a.k.a. @hannelita)
Desenvolvedora
Jogos
Café e Pokémon <3
Wednesday, July 10, 13
O que vamos ver
aqui
Wednesday, July 10, 13
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Wednesday, July 10, 13
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Wednesday, July 10, 13
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Wednesday, July...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
O que vamos ver
aqui
Desafios de qualquer desenvolvedor
Por que ir para mobile e iOS?
Básico de Objective C
Truques de memó...
Programação
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Wednesday, July 10, 13
1990 -> 2000
Web!
Wednesday, July 10, 13
Skill set
Wednesday, July 10, 13
Skill set
PHP
Wednesday, July 10, 13
Skill set
PHP
Apache
Wednesday, July 10, 13
Skill set
PHP
Apache
MySQL
Wednesday, July 10, 13
Fácil!
Wednesday, July 10, 13
Fácil!
Wednesday, July 10, 13
Wednesday, July 10, 13
Wednesday, July 10, 13
Wednesday, July 10, 13
JDBC
Wednesday, July 10, 13
JDBC
Hibernate 2
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Wednesday, July 10, 13
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
Wednesday, Ju...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
Wedne...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
Fácil, né?
Wednesday, July 10, 13
Fácil, né?
Wednesday, July 10, 13
Tem mais!
Wednesday, July 10, 13
Tem mais!
Oracle
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Wednesday, July 10,...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Wednesday, Ju...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Wed...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
Sou F...
Wednesday, July 10, 13
Sou F...
Wednesday, July 10, 13
Sou F...
Dig Din
Wednesday, July 10, 13
Só que não
Wednesday, July 10, 13
Só que não
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Wednesday, July 10, 13
2000 -> hoje
Mobile!
Wednesday, July 10, 13
Seu dispositivo
móvel
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Email
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Email
Personal
Trainer
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Email
Personal
Trainer
Despertador
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Email
Personal
Trainer
Despertador
Álbum de
fotos
Wednesday, July 10, 13
Seu dispositivo
móvel
Banco
Email
Personal
Trainer
Despertador
Álbum de
fotos
Comunicação
Wednesday, July 10, 13
A maçã
Wednesday, July 10, 13
A maçã
Wednesday, July 10, 13
A maçã
Wednesday, July 10, 13
A maçã
Wednesday, July 10, 13
A maçã
Wednesday, July 10, 13
A maçã
Aí, gata, tem
WhatsApp?
Wednesday, July 10, 13
O iPhone
Wednesday, July 10, 13
O iPhone
Wednesday, July 10, 13
O iPhone
Wednesday, July 10, 13
O iPhone
Wednesday, July 10, 13
O iPhone
A maçã de
Adão e Eva dá
dinheiro?
Wednesday, July 10, 13
O iPhone
A maçã de
Adão e Eva dá
dinheiro?
Faça umas apps
então <3
Wednesday, July 10, 13
Desenvolvendo
Wednesday, July 10, 13
Desenvolvendo
Objective C
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
CoreServices
Wednesday, July 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
CoreServices
CoreLocation
Wednesday, July 1...
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
CoreServices
CoreLocation
ARC
Wednesday, Ju...
Desenvolvendo
Wednesday, July 10, 13
Desenvolvendo
Wednesday, July 10, 13
Por onde começo?
Wednesday, July 10, 13
Por onde começo?
Mínimo de
programação
procedural
Wednesday, July 10, 13
Por onde começo?
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10...
Fácil, vai!
Wednesday, July 10, 13
Espere aí
Determinar o que
preciso para escrever
o código!
Wednesday, July 10, 13
Checklist
Mac
Xcode
Wednesday, July 10, 13
Checklist
Mac
Xcode
Wednesday, July 10, 13
Checklist
Mac
Xcode
Wednesday, July 10, 13
Checklist
Mac
Xcode
Wednesday, July 10, 13
Checklist
Mac
Xcode
Wednesday, July 10, 13
Abra o XCode
Wednesday, July 10, 13
Abra o XCode
Botão pra ca....*
Wednesday, July 10, 13
Abra o XCode
Wednesday, July 10, 13
Crie um projeto
File --> New --> Project
Escolha Single View Application
Pouco importam os nomes
Salve num local adequado
...
Crie um projeto
Wednesday, July 10, 13
Não desista!
Wednesday, July 10, 13
Não desista!
Mínimo de
programação
procedural
Wednesday, July 10, 13
DEMO! 666
Wednesday, July 10, 13
DEMO! 666Vem, XCODE
<3
Wednesday, July 10, 13
Não desista!
1.
Wednesday, July 10, 13
Não desista!
1.
Wednesday, July 10, 13
Não desista!
1.
2.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
4.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
4.
Wednesday, July 10, 13
Não desista!
1.
2. Simulador
3.
4.
Wednesday, July 10, 13
Procedural
Wednesday, July 10, 13
Procedural
Wednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Tipo de
retorno
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Tipo de
retorno
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Nome
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Nome
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Nome do
parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Nome do
parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Tipo do
parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Tipo do
parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Corpo
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Corpo
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua
função
Wednesday, July 10, 13
Uma função
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Uma função
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
[[[]]]
*
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
NSString *tdc
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Endereço de
memória
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Valor
Wednesday, July 10, 13
Ponteiro ==
Controle Remoto
Wednesday, July 10, 13
Fácil, vai!
Wednesday, July 10, 13
Próximo passo
Wednesday, July 10, 13
Próximo passo
Mínimo de
Orientação a
Objetos
Wednesday, July 10, 13
Próximo passo
Criar uma classe
Criar atributos e métodos
Instanciar um objeto
Wednesday, July 10, 13
Criando uma classe
Wednesday, July 10, 13
Criando uma classe
Wednesday, July 10, 13
Criando uma classe
Wednesday, July 10, 13
Criando uma classe
Wednesday, July 10, 13
Criando uma classe
Wednesday, July 10, 13
Criando uma classe
CRIE GRUPOS!
Wednesday, July 10, 13
Grupos para as
classes
Wednesday, July 10, 13
Grupos para as
classes
Wednesday, July 10, 13
Grupos para as
classes
Cuidado!
Wednesday, July 10, 13
Grupos para as
classes
Cuidado!
Não é criado um diretório!
Wednesday, July 10, 13
DEMO! 666
Wednesday, July 10, 13
DEMO! 666Vem, XCODE
<3
Wednesday, July 10, 13
.h
Wednesday, July 10, 13
.h
Atributos
Wednesday, July 10, 13
.h
Wednesday, July 10, 13
.h
Métodos
Wednesday, July 10, 13
.h - destaques
Wednesday, July 10, 13
.h - destaques
@property
Wednesday, July 10, 13
.h - destaques
@property
readwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
Wednesday, July 10, 13
.h - destaques
@property
readwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
Wednesday, July 10, 13
.h - destaques
@property
readwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
=
Wednesday, July 10, 13
.h - destaques
@property
readwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
getters e setters
automáticos
=
...
.m
Wednesday, July 10, 13
.m
Indica a
interface
Wednesday, July 10, 13
.m
Wednesday, July 10, 13
.m
“Sintetiza” as
properties
Wednesday, July 10, 13
.m
Wednesday, July 10, 13
.m
Implementa os
métodos
Wednesday, July 10, 13
Visibilidade
Wednesday, July 10, 13
Visibilidade
Todo método
que está no .h é
público
Wednesday, July 10, 13
Até aqui, fácil!
Wednesday, July 10, 13
Em Objective C...
Wednesday, July 10, 13
Em Objective C...
Tenho que fazer
[alloc[init]]
Wednesday, July 10, 13
Em Objective C...
Wednesday, July 10, 13
Em Objective C...
E precisa dar
release também!
Wednesday, July 10, 13
Em Objective C...
Wednesday, July 10, 13
Em Objective C...
E se não fizer?
Wednesday, July 10, 13
Em Objective C...
Wednesday, July 10, 13
Em Objective C...
LEAK
Wednesday, July 10, 13
Use release quando
Houver um [alloc[init]]
Houver um [copy]
Qualquer método que remeta a um Factory
pattern - [xxx create]...
Use release!
Wednesday, July 10, 13
Use release!
Nunca chame
[pikachu dealloc]
Wednesday, July 10, 13
dealloc
Wednesday, July 10, 13
dealloc
Declaração do que
deve ser feito ao
desalocar o objeto
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
[TreinadorPokemon alloc[init]];
Wednesday, July 10, 13
Por falar em dealloc
dealloc
[TreinadorPokemon alloc[init]];
Wednesday, July 10, 13
Ajude a implementar!
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
Treinador *gary = [Treinad...
Por falar em dealloc
Wednesday, July 10, 13
Por falar em dealloc
Por alguns instantes,
gary apontará para ash!
Wednesday, July 10, 13
Por falar em dealloc
Por alguns instantes,
gary apontará para ash!
Dangling pointer
Wednesday, July 10, 13
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Dangling pointer
- (void) teste
{
Treinador *ash = [Treinador alloc [init]];
[ash release];
ash = nil;
Treinador *gary = [...
Suave!
Wednesday, July 10, 13
Se há dealloc...
Wednesday, July 10, 13
Se há dealloc...
Deve haver um init!
Wednesday, July 10, 13
Se há dealloc...
Deve haver um init!
Wednesday, July 10, 13
Se há dealloc...
Deve haver um init!
Wednesday, July 10, 13
Se há dealloc...
Deve haver um init!
Wednesday, July 10, 13
init
Wednesday, July 10, 13
init
Se ocorreu algum
problema na
inicialização do objeto,
não inicialize seus
atributos
Wednesday, July 10, 13
alloc - init - release
Wednesday, July 10, 13
alloc - init - release
alloc
Wednesday, July 10, 13
alloc - init - release
alloc
init
Wednesday, July 10, 13
alloc - init - release
alloc
init
release
Wednesday, July 10, 13
alloc - init - release
alloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
Wedn...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
alloc - init - release
Wednesday, July 10, 13
autorelease
Wednesday, July 10, 13
autorelease
Wednesday, July 10, 13
autorelease
Wednesday, July 10, 13
autorelease
Wednesday, July 10, 13
autorelease
Wednesday, July 10, 13
autorelease pool
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Treinador *ash
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Treinador *ash
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Treinador *ash
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Treinador *ash
Wednesday, July 10, 13
autorelease pool
[[ ]autorelease];
Treinador *ash
Wednesday, July 10, 13
Super fácil!
Wednesday, July 10, 13
Por falar em alocar
Wednesday, July 10, 13
Por falar em alocar
Wednesday, July 10, 13
Por falar em alocar
EquipeRocket *rocket =
Wednesday, July 10, 13
Por falar em alocar
EquipeRocket *rocket =
Wednesday, July 10, 13
Por falar em alocar
EquipeRocket *rocket =
Só há uma equipe
Rocket
Wednesday, July 10, 13
Singleton
Wednesday, July 10, 13
Singleton
CUIDADO
Wednesday, July 10, 13
Pense na classe
Wednesday, July 10, 13
Pense na classe
Armazena muita
informação
Wednesday, July 10, 13
Singleton
Wednesday, July 10, 13
Singleton
Nem toda classe
precisa ser um
singleton!
Wednesday, July 10, 13
Rá
Wednesday, July 10, 13
Open Source
Wednesday, July 10, 13
Open Source
COCOAPODS
Wednesday, July 10, 13
Open Source
COCOAPODS
<3
Wednesday, July 10, 13
AFNetworking
Wednesday, July 10, 13
AppCode
Wednesday, July 10, 13
Obigada pelo bate
papo!
Wednesday, July 10, 13
Obigada pelo bate
papo!
@hannelita
Wednesday, July 10, 13
Obigada pelo bate
papo!
@hannelita
hannelita@gmail.com
Wednesday, July 10, 13
Obigada pelo bate
papo!
@hannelita
hannelita@gmail.com
hannelita.com
Wednesday, July 10, 13
Upcoming SlideShare
Loading in...5
×

Como usar seu para-quedas Caso você caia no mundo de iOS

543

Published on

Palestra TDC 2013 - São Paulo - Trilha iOS

Published in: Technology

Como usar seu para-quedas Caso você caia no mundo de iOS

  1. 1. Como usar seu para-quedas Caso você caia no mundo de iOS Isso não é um para- quedas, é uma maçã! Fuuu Wednesday, July 10, 13
  2. 2. Oi! Hanneli (a.k.a. @hannelita) Desenvolvedora Jogos Café e Pokémon <3 Wednesday, July 10, 13
  3. 3. O que vamos ver aqui Wednesday, July 10, 13
  4. 4. O que vamos ver aqui Desafios de qualquer desenvolvedor Wednesday, July 10, 13
  5. 5. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Wednesday, July 10, 13
  6. 6. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Wednesday, July 10, 13
  7. 7. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Wednesday, July 10, 13
  8. 8. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Algumas receitas de bolo (a.k.a design patterns) Wednesday, July 10, 13
  9. 9. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Algumas receitas de bolo (a.k.a design patterns) Open Source e ferramentas legais Wednesday, July 10, 13
  10. 10. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Algumas receitas de bolo (a.k.a design patterns) Open Source e ferramentas legais Pokémon, história e gifs engraçados <3 Wednesday, July 10, 13
  11. 11. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Algumas receitas de bolo (a.k.a design patterns) Open Source e ferramentas legais Pokémon, história e gifs engraçados <3 Wednesday, July 10, 13
  12. 12. O que vamos ver aqui Desafios de qualquer desenvolvedor Por que ir para mobile e iOS? Básico de Objective C Truques de memória Algumas receitas de bolo (a.k.a design patterns) Open Source e ferramentas legais Pokémon, história e gifs engraçados <3 E sem graça também Wednesday, July 10, 13
  13. 13. Programação Wednesday, July 10, 13
  14. 14. 1990 -> 2000 Wednesday, July 10, 13
  15. 15. 1990 -> 2000 Wednesday, July 10, 13
  16. 16. 1990 -> 2000 Wednesday, July 10, 13
  17. 17. 1990 -> 2000 Wednesday, July 10, 13
  18. 18. 1990 -> 2000 Wednesday, July 10, 13
  19. 19. 1990 -> 2000 Wednesday, July 10, 13
  20. 20. 1990 -> 2000 Web! Wednesday, July 10, 13
  21. 21. Skill set Wednesday, July 10, 13
  22. 22. Skill set PHP Wednesday, July 10, 13
  23. 23. Skill set PHP Apache Wednesday, July 10, 13
  24. 24. Skill set PHP Apache MySQL Wednesday, July 10, 13
  25. 25. Fácil! Wednesday, July 10, 13
  26. 26. Fácil! Wednesday, July 10, 13
  27. 27. Wednesday, July 10, 13
  28. 28. Wednesday, July 10, 13
  29. 29. Wednesday, July 10, 13
  30. 30. JDBC Wednesday, July 10, 13
  31. 31. JDBC Hibernate 2 Wednesday, July 10, 13
  32. 32. JDBC Hibernate 2 XML Wednesday, July 10, 13
  33. 33. JDBC Hibernate 2 XML JPA Wednesday, July 10, 13
  34. 34. JDBC Hibernate 2 XML JPA Hibernate 3.1 Wednesday, July 10, 13
  35. 35. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations Wednesday, July 10, 13
  36. 36. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 Wednesday, July 10, 13
  37. 37. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Wednesday, July 10, 13
  38. 38. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Wednesday, July 10, 13
  39. 39. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Wednesday, July 10, 13
  40. 40. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet Wednesday, July 10, 13
  41. 41. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Wednesday, July 10, 13
  42. 42. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Wednesday, July 10, 13
  43. 43. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 Wednesday, July 10, 13
  44. 44. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor Wednesday, July 10, 13
  45. 45. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 Wednesday, July 10, 13
  46. 46. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Wednesday, July 10, 13
  47. 47. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Wednesday, July 10, 13
  48. 48. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Wednesday, July 10, 13
  49. 49. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Wednesday, July 10, 13
  50. 50. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Wednesday, July 10, 13
  51. 51. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Wednesday, July 10, 13
  52. 52. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty Wednesday, July 10, 13
  53. 53. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Wednesday, July 10, 13
  54. 54. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Wednesday, July 10, 13
  55. 55. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Wednesday, July 10, 13
  56. 56. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere Wednesday, July 10, 13
  57. 57. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Wednesday, July 10, 13
  58. 58. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices Wednesday, July 10, 13
  59. 59. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices JMS Wednesday, July 10, 13
  60. 60. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices JMS JAX-RS Wednesday, July 10, 13
  61. 61. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices JMS JAX-RS Eclipse Wednesday, July 10, 13
  62. 62. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices JMS JAX-RS Eclipse IntelliJ IDEA Wednesday, July 10, 13
  63. 63. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2 EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Primefaces Seam Tomcat Jetty JBoss Glassfish Weblogic Websphere EJB Webservices JMS JAX-RS Eclipse IntelliJ IDEA Netbeans Wednesday, July 10, 13
  64. 64. Fácil, né? Wednesday, July 10, 13
  65. 65. Fácil, né? Wednesday, July 10, 13
  66. 66. Tem mais! Wednesday, July 10, 13
  67. 67. Tem mais! Oracle Wednesday, July 10, 13
  68. 68. Tem mais! Oracle NoSQL Wednesday, July 10, 13
  69. 69. Tem mais! Oracle NoSQL Ruby Wednesday, July 10, 13
  70. 70. Tem mais! Oracle NoSQL Ruby Rails Wednesday, July 10, 13
  71. 71. Tem mais! Oracle NoSQL Ruby Rails Sinatra Wednesday, July 10, 13
  72. 72. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Wednesday, July 10, 13
  73. 73. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend Wednesday, July 10, 13
  74. 74. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML Wednesday, July 10, 13
  75. 75. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS Wednesday, July 10, 13
  76. 76. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS Wednesday, July 10, 13
  77. 77. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Wednesday, July 10, 13
  78. 78. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Wednesday, July 10, 13
  79. 79. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django Wednesday, July 10, 13
  80. 80. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD Wednesday, July 10, 13
  81. 81. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim Wednesday, July 10, 13
  82. 82. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Wednesday, July 10, 13
  83. 83. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Wednesday, July 10, 13
  84. 84. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Wednesday, July 10, 13
  85. 85. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Wednesday, July 10, 13
  86. 86. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Wednesday, July 10, 13
  87. 87. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Wednesday, July 10, 13
  88. 88. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Neo4j Wednesday, July 10, 13
  89. 89. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Neo4j Redis Wednesday, July 10, 13
  90. 90. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Neo4j Redis Heroku Wednesday, July 10, 13
  91. 91. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Neo4j Redis Heroku Git Wednesday, July 10, 13
  92. 92. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Backbone.js Neo4j Redis Heroku Git Torquebox Wednesday, July 10, 13
  93. 93. Sou F... Wednesday, July 10, 13
  94. 94. Sou F... Wednesday, July 10, 13
  95. 95. Sou F... Dig Din Wednesday, July 10, 13
  96. 96. Só que não Wednesday, July 10, 13
  97. 97. Só que não Wednesday, July 10, 13
  98. 98. 2000 -> hoje Wednesday, July 10, 13
  99. 99. 2000 -> hoje Wednesday, July 10, 13
  100. 100. 2000 -> hoje Wednesday, July 10, 13
  101. 101. 2000 -> hoje Wednesday, July 10, 13
  102. 102. 2000 -> hoje Wednesday, July 10, 13
  103. 103. 2000 -> hoje Wednesday, July 10, 13
  104. 104. 2000 -> hoje Wednesday, July 10, 13
  105. 105. 2000 -> hoje Wednesday, July 10, 13
  106. 106. 2000 -> hoje Mobile! Wednesday, July 10, 13
  107. 107. Seu dispositivo móvel Wednesday, July 10, 13
  108. 108. Seu dispositivo móvel Banco Wednesday, July 10, 13
  109. 109. Seu dispositivo móvel Banco Email Wednesday, July 10, 13
  110. 110. Seu dispositivo móvel Banco Email Personal Trainer Wednesday, July 10, 13
  111. 111. Seu dispositivo móvel Banco Email Personal Trainer Despertador Wednesday, July 10, 13
  112. 112. Seu dispositivo móvel Banco Email Personal Trainer Despertador Álbum de fotos Wednesday, July 10, 13
  113. 113. Seu dispositivo móvel Banco Email Personal Trainer Despertador Álbum de fotos Comunicação Wednesday, July 10, 13
  114. 114. A maçã Wednesday, July 10, 13
  115. 115. A maçã Wednesday, July 10, 13
  116. 116. A maçã Wednesday, July 10, 13
  117. 117. A maçã Wednesday, July 10, 13
  118. 118. A maçã Wednesday, July 10, 13
  119. 119. A maçã Aí, gata, tem WhatsApp? Wednesday, July 10, 13
  120. 120. O iPhone Wednesday, July 10, 13
  121. 121. O iPhone Wednesday, July 10, 13
  122. 122. O iPhone Wednesday, July 10, 13
  123. 123. O iPhone Wednesday, July 10, 13
  124. 124. O iPhone A maçã de Adão e Eva dá dinheiro? Wednesday, July 10, 13
  125. 125. O iPhone A maçã de Adão e Eva dá dinheiro? Faça umas apps então <3 Wednesday, July 10, 13
  126. 126. Desenvolvendo Wednesday, July 10, 13
  127. 127. Desenvolvendo Objective C Wednesday, July 10, 13
  128. 128. Desenvolvendo Objective C iOS Wednesday, July 10, 13
  129. 129. Desenvolvendo Objective C iOS Xcode Wednesday, July 10, 13
  130. 130. Desenvolvendo Objective C iOS Xcode SQLite Wednesday, July 10, 13
  131. 131. Desenvolvendo Objective C iOS Xcode SQLite Foundation Wednesday, July 10, 13
  132. 132. Desenvolvendo Objective C iOS Xcode SQLite Foundation C Wednesday, July 10, 13
  133. 133. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ Wednesday, July 10, 13
  134. 134. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit Wednesday, July 10, 13
  135. 135. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit CoreGraphics Wednesday, July 10, 13
  136. 136. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit CoreGraphics CoreServices Wednesday, July 10, 13
  137. 137. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit CoreGraphics CoreServices CoreLocation Wednesday, July 10, 13
  138. 138. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit CoreGraphics CoreServices CoreLocation ARC Wednesday, July 10, 13
  139. 139. Desenvolvendo Wednesday, July 10, 13
  140. 140. Desenvolvendo Wednesday, July 10, 13
  141. 141. Por onde começo? Wednesday, July 10, 13
  142. 142. Por onde começo? Mínimo de programação procedural Wednesday, July 10, 13
  143. 143. Por onde começo? Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  144. 144. Fácil, vai! Wednesday, July 10, 13
  145. 145. Espere aí Determinar o que preciso para escrever o código! Wednesday, July 10, 13
  146. 146. Checklist Mac Xcode Wednesday, July 10, 13
  147. 147. Checklist Mac Xcode Wednesday, July 10, 13
  148. 148. Checklist Mac Xcode Wednesday, July 10, 13
  149. 149. Checklist Mac Xcode Wednesday, July 10, 13
  150. 150. Checklist Mac Xcode Wednesday, July 10, 13
  151. 151. Abra o XCode Wednesday, July 10, 13
  152. 152. Abra o XCode Botão pra ca....* Wednesday, July 10, 13
  153. 153. Abra o XCode Wednesday, July 10, 13
  154. 154. Crie um projeto File --> New --> Project Escolha Single View Application Pouco importam os nomes Salve num local adequado Wednesday, July 10, 13
  155. 155. Crie um projeto Wednesday, July 10, 13
  156. 156. Não desista! Wednesday, July 10, 13
  157. 157. Não desista! Mínimo de programação procedural Wednesday, July 10, 13
  158. 158. DEMO! 666 Wednesday, July 10, 13
  159. 159. DEMO! 666Vem, XCODE <3 Wednesday, July 10, 13
  160. 160. Não desista! 1. Wednesday, July 10, 13
  161. 161. Não desista! 1. Wednesday, July 10, 13
  162. 162. Não desista! 1. 2. Wednesday, July 10, 13
  163. 163. Não desista! 1. 2. Simulador Wednesday, July 10, 13
  164. 164. Não desista! 1. 2. Simulador 3. Wednesday, July 10, 13
  165. 165. Não desista! 1. 2. Simulador 3. Wednesday, July 10, 13
  166. 166. Não desista! 1. 2. Simulador 3. Wednesday, July 10, 13
  167. 167. Não desista! 1. 2. Simulador 3. 4. Wednesday, July 10, 13
  168. 168. Não desista! 1. 2. Simulador 3. 4. Wednesday, July 10, 13
  169. 169. Não desista! 1. 2. Simulador 3. 4. Wednesday, July 10, 13
  170. 170. Procedural Wednesday, July 10, 13
  171. 171. Procedural Wednesday, July 10, 13
  172. 172. Procedural Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  173. 173. Procedural Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  174. 174. Procedural Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  175. 175. Procedural Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  176. 176. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  177. 177. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  178. 178. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  179. 179. Uma função Tipo de retorno [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  180. 180. Uma função Tipo de retorno [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  181. 181. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  182. 182. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  183. 183. Uma função Nome [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  184. 184. Uma função Nome [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  185. 185. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  186. 186. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  187. 187. Uma função Nome do parâmetro [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  188. 188. Uma função Nome do parâmetro [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  189. 189. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  190. 190. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  191. 191. Uma função Tipo do parâmetro [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  192. 192. Uma função Tipo do parâmetro [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  193. 193. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  194. 194. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  195. 195. Uma função Corpo [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  196. 196. Uma função Corpo [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  197. 197. Uma função [self funcaoTDC:coloqueSuaVariavelAqui]; Chamando sua função Wednesday, July 10, 13
  198. 198. Uma função Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  199. 199. Uma função Criar variáveis com um valor Printar esses valores Criar uma função Chamar essa função Wednesday, July 10, 13
  200. 200. [[[]]] * Wednesday, July 10, 13
  201. 201. Ponteiro == Controle Remoto Wednesday, July 10, 13
  202. 202. Ponteiro == Controle Remoto Wednesday, July 10, 13
  203. 203. Ponteiro == Controle Remoto Wednesday, July 10, 13
  204. 204. Ponteiro == Controle Remoto Wednesday, July 10, 13
  205. 205. Ponteiro == Controle Remoto Wednesday, July 10, 13
  206. 206. Ponteiro == Controle Remoto Wednesday, July 10, 13
  207. 207. Ponteiro == Controle Remoto Wednesday, July 10, 13
  208. 208. Ponteiro == Controle Remoto NSString *tdc Wednesday, July 10, 13
  209. 209. Ponteiro == Controle Remoto Wednesday, July 10, 13
  210. 210. Ponteiro == Controle Remoto Endereço de memória Wednesday, July 10, 13
  211. 211. Ponteiro == Controle Remoto Wednesday, July 10, 13
  212. 212. Ponteiro == Controle Remoto Valor Wednesday, July 10, 13
  213. 213. Ponteiro == Controle Remoto Wednesday, July 10, 13
  214. 214. Fácil, vai! Wednesday, July 10, 13
  215. 215. Próximo passo Wednesday, July 10, 13
  216. 216. Próximo passo Mínimo de Orientação a Objetos Wednesday, July 10, 13
  217. 217. Próximo passo Criar uma classe Criar atributos e métodos Instanciar um objeto Wednesday, July 10, 13
  218. 218. Criando uma classe Wednesday, July 10, 13
  219. 219. Criando uma classe Wednesday, July 10, 13
  220. 220. Criando uma classe Wednesday, July 10, 13
  221. 221. Criando uma classe Wednesday, July 10, 13
  222. 222. Criando uma classe Wednesday, July 10, 13
  223. 223. Criando uma classe CRIE GRUPOS! Wednesday, July 10, 13
  224. 224. Grupos para as classes Wednesday, July 10, 13
  225. 225. Grupos para as classes Wednesday, July 10, 13
  226. 226. Grupos para as classes Cuidado! Wednesday, July 10, 13
  227. 227. Grupos para as classes Cuidado! Não é criado um diretório! Wednesday, July 10, 13
  228. 228. DEMO! 666 Wednesday, July 10, 13
  229. 229. DEMO! 666Vem, XCODE <3 Wednesday, July 10, 13
  230. 230. .h Wednesday, July 10, 13
  231. 231. .h Atributos Wednesday, July 10, 13
  232. 232. .h Wednesday, July 10, 13
  233. 233. .h Métodos Wednesday, July 10, 13
  234. 234. .h - destaques Wednesday, July 10, 13
  235. 235. .h - destaques @property Wednesday, July 10, 13
  236. 236. .h - destaques @property readwrite ou readonly assign, retain ou copy nonatomic ou atomic Wednesday, July 10, 13
  237. 237. .h - destaques @property readwrite ou readonly assign, retain ou copy nonatomic ou atomic Wednesday, July 10, 13
  238. 238. .h - destaques @property readwrite ou readonly assign, retain ou copy nonatomic ou atomic = Wednesday, July 10, 13
  239. 239. .h - destaques @property readwrite ou readonly assign, retain ou copy nonatomic ou atomic getters e setters automáticos = Wednesday, July 10, 13
  240. 240. .m Wednesday, July 10, 13
  241. 241. .m Indica a interface Wednesday, July 10, 13
  242. 242. .m Wednesday, July 10, 13
  243. 243. .m “Sintetiza” as properties Wednesday, July 10, 13
  244. 244. .m Wednesday, July 10, 13
  245. 245. .m Implementa os métodos Wednesday, July 10, 13
  246. 246. Visibilidade Wednesday, July 10, 13
  247. 247. Visibilidade Todo método que está no .h é público Wednesday, July 10, 13
  248. 248. Até aqui, fácil! Wednesday, July 10, 13
  249. 249. Em Objective C... Wednesday, July 10, 13
  250. 250. Em Objective C... Tenho que fazer [alloc[init]] Wednesday, July 10, 13
  251. 251. Em Objective C... Wednesday, July 10, 13
  252. 252. Em Objective C... E precisa dar release também! Wednesday, July 10, 13
  253. 253. Em Objective C... Wednesday, July 10, 13
  254. 254. Em Objective C... E se não fizer? Wednesday, July 10, 13
  255. 255. Em Objective C... Wednesday, July 10, 13
  256. 256. Em Objective C... LEAK Wednesday, July 10, 13
  257. 257. Use release quando Houver um [alloc[init]] Houver um [copy] Qualquer método que remeta a um Factory pattern - [xxx create] Wednesday, July 10, 13
  258. 258. Use release! Wednesday, July 10, 13
  259. 259. Use release! Nunca chame [pikachu dealloc] Wednesday, July 10, 13
  260. 260. dealloc Wednesday, July 10, 13
  261. 261. dealloc Declaração do que deve ser feito ao desalocar o objeto Wednesday, July 10, 13
  262. 262. Por falar em dealloc Wednesday, July 10, 13
  263. 263. Por falar em dealloc Wednesday, July 10, 13
  264. 264. Por falar em dealloc [TreinadorPokemon alloc[init]]; Wednesday, July 10, 13
  265. 265. Por falar em dealloc dealloc [TreinadorPokemon alloc[init]]; Wednesday, July 10, 13
  266. 266. Ajude a implementar! Wednesday, July 10, 13
  267. 267. Por falar em dealloc Wednesday, July 10, 13
  268. 268. Por falar em dealloc Wednesday, July 10, 13
  269. 269. Por falar em dealloc Wednesday, July 10, 13
  270. 270. Por falar em dealloc Wednesday, July 10, 13
  271. 271. Por falar em dealloc Wednesday, July 10, 13
  272. 272. Por falar em dealloc Wednesday, July 10, 13
  273. 273. Por falar em dealloc Wednesday, July 10, 13
  274. 274. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Wednesday, July 10, 13
  275. 275. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  276. 276. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  277. 277. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  278. 278. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  279. 279. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  280. 280. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  281. 281. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Treinador *gary Wednesday, July 10, 13
  282. 282. Por falar em dealloc - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Treinador *gary Wednesday, July 10, 13
  283. 283. Por falar em dealloc Wednesday, July 10, 13
  284. 284. Por falar em dealloc Por alguns instantes, gary apontará para ash! Wednesday, July 10, 13
  285. 285. Por falar em dealloc Por alguns instantes, gary apontará para ash! Dangling pointer Wednesday, July 10, 13
  286. 286. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Wednesday, July 10, 13
  287. 287. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  288. 288. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  289. 289. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  290. 290. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  291. 291. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  292. 292. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  293. 293. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  294. 294. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Wednesday, July 10, 13
  295. 295. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h nil Wednesday, July 10, 13
  296. 296. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Treinador *gary nil Wednesday, July 10, 13
  297. 297. Dangling pointer - (void) teste { Treinador *ash = [Treinador alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Memória 1234h Treinador *gary nil Wednesday, July 10, 13
  298. 298. Suave! Wednesday, July 10, 13
  299. 299. Se há dealloc... Wednesday, July 10, 13
  300. 300. Se há dealloc... Deve haver um init! Wednesday, July 10, 13
  301. 301. Se há dealloc... Deve haver um init! Wednesday, July 10, 13
  302. 302. Se há dealloc... Deve haver um init! Wednesday, July 10, 13
  303. 303. Se há dealloc... Deve haver um init! Wednesday, July 10, 13
  304. 304. init Wednesday, July 10, 13
  305. 305. init Se ocorreu algum problema na inicialização do objeto, não inicialize seus atributos Wednesday, July 10, 13
  306. 306. alloc - init - release Wednesday, July 10, 13
  307. 307. alloc - init - release alloc Wednesday, July 10, 13
  308. 308. alloc - init - release alloc init Wednesday, July 10, 13
  309. 309. alloc - init - release alloc init release Wednesday, July 10, 13
  310. 310. alloc - init - release alloc init release alloc init release Wednesday, July 10, 13
  311. 311. alloc - init - release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  312. 312. alloc - init - release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  313. 313. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  314. 314. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  315. 315. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  316. 316. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  317. 317. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  318. 318. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  319. 319. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  320. 320. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  321. 321. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  322. 322. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init releaseWednesday, July 10, 13
  323. 323. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  324. 324. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  325. 325. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  326. 326. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  327. 327. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  328. 328. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  329. 329. alloc - init - release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  330. 330. alloc - init - release Wednesday, July 10, 13
  331. 331. autorelease Wednesday, July 10, 13
  332. 332. autorelease Wednesday, July 10, 13
  333. 333. autorelease Wednesday, July 10, 13
  334. 334. autorelease Wednesday, July 10, 13
  335. 335. autorelease Wednesday, July 10, 13
  336. 336. autorelease pool Wednesday, July 10, 13
  337. 337. autorelease pool [[ ]autorelease]; Wednesday, July 10, 13
  338. 338. autorelease pool [[ ]autorelease]; Wednesday, July 10, 13
  339. 339. autorelease pool [[ ]autorelease]; Treinador *ash Wednesday, July 10, 13
  340. 340. autorelease pool [[ ]autorelease]; Treinador *ash Wednesday, July 10, 13
  341. 341. autorelease pool [[ ]autorelease]; Treinador *ash Wednesday, July 10, 13
  342. 342. autorelease pool [[ ]autorelease]; Treinador *ash Wednesday, July 10, 13
  343. 343. autorelease pool [[ ]autorelease]; Treinador *ash Wednesday, July 10, 13
  344. 344. Super fácil! Wednesday, July 10, 13
  345. 345. Por falar em alocar Wednesday, July 10, 13
  346. 346. Por falar em alocar Wednesday, July 10, 13
  347. 347. Por falar em alocar EquipeRocket *rocket = Wednesday, July 10, 13
  348. 348. Por falar em alocar EquipeRocket *rocket = Wednesday, July 10, 13
  349. 349. Por falar em alocar EquipeRocket *rocket = Só há uma equipe Rocket Wednesday, July 10, 13
  350. 350. Singleton Wednesday, July 10, 13
  351. 351. Singleton CUIDADO Wednesday, July 10, 13
  352. 352. Pense na classe Wednesday, July 10, 13
  353. 353. Pense na classe Armazena muita informação Wednesday, July 10, 13
  354. 354. Singleton Wednesday, July 10, 13
  355. 355. Singleton Nem toda classe precisa ser um singleton! Wednesday, July 10, 13
  356. 356. Rá Wednesday, July 10, 13
  357. 357. Open Source Wednesday, July 10, 13
  358. 358. Open Source COCOAPODS Wednesday, July 10, 13
  359. 359. Open Source COCOAPODS <3 Wednesday, July 10, 13
  360. 360. AFNetworking Wednesday, July 10, 13
  361. 361. AppCode Wednesday, July 10, 13
  362. 362. Obigada pelo bate papo! Wednesday, July 10, 13
  363. 363. Obigada pelo bate papo! @hannelita Wednesday, July 10, 13
  364. 364. Obigada pelo bate papo! @hannelita hannelita@gmail.com Wednesday, July 10, 13
  365. 365. Obigada pelo bate papo! @hannelita hannelita@gmail.com hannelita.com Wednesday, July 10, 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×