Como usar seu para-quedasCaso você caia no mundo de iOS
Isso não é um para-
quedas, é uma maçã! Fuuu
Wednesday, July 10, 13
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 10, 13
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
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
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
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 <3Wednesday, July 10, 13
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 <3Wednesday, July 10, 13
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
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
JDBCHibernate 2
Wednesday, July 10, 13
JDBCHibernate 2
XML
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
Servlet
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
Struts
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
Primefaces
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
Tomcat
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBoss
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
Weblogic
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJB
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
JMS
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
JMSJAX-RS
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
JMSJAX-RS
Eclipse
Wednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
JMSJAX-RS
Eclipse
IntelliJ IDEAWednesday, July 10, 13
JDBCHibernate 2
XMLJPA
Hibernate 3.1Annotations
JPA 2EclipseLink
Hibernate 4
ServletJSP
StrutsStruts 2VRaptor
JSF1JSF 2Richfaces
PrimefacesSeam
TomcatJetty
JBossGlassfish
WeblogicWebsphere
EJBWebservices
JMSJAX-RS
Eclipse
IntelliJ IDEANetbeans
Wednesday, July 10, 13
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
NoSQLRuby
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRails
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatra
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
Zend
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
Python
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vim
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpec
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
Cassandra
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.js
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4j
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4jRedis
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4jRedis
Heroku
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4jRedis
HerokuGit
Wednesday, July 10, 13
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4jRedis
HerokuGit
Torquebox
Wednesday, July 10, 13
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
Wednesday, July 10, 13
Seu dispositivo móvel
Banco
Personal Trainer
Wednesday, July 10, 13
Seu dispositivo móvel
Banco
Personal Trainer
Despertador
Wednesday, July 10, 13
Seu dispositivo móvel
Banco
Personal Trainer
Despertador
Álbum de fotos
Wednesday, July 10, 13
Seu dispositivo móvel
Banco
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 iPhoneA maçã de
Adão e Eva dá dinheiro?
Wednesday, July 10, 13
O iPhoneA 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 10, 13
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
CoreServices
CoreLocation
ARC
Wednesday, July 10, 13
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, 13
Fácil, vai!
Wednesday, July 10, 13
Espere aí
Determinar o que preciso para escrever o código!
Wednesday, July 10, 13
Checklist
MacXcode
Wednesday, July 10, 13
Checklist
MacXcode
Wednesday, July 10, 13
Checklist
MacXcode
Wednesday, July 10, 13
Checklist
MacXcode
Wednesday, July 10, 13
Checklist
MacXcode
Wednesday, July 10, 13
Abra o XCode
Wednesday, July 10, 13
Abra o XCodeBotã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
Wednesday, July 10, 13
Crie um projeto
Wednesday, July 10, 13
Não desista!
Wednesday, July 10, 13
Não desista!
Mínimo de programação
proceduralWednesday, 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çãoWednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa funçãoWednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa funçãoWednesday, July 10, 13
Procedural
Criar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa funçãoWednesday, 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çãoTipo de retorno
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua função
Wednesday, July 10, 13
Uma funçãoTipo 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çãoNome
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua função
Wednesday, July 10, 13
Uma funçãoNome
[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çãoNome do parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua função
Wednesday, July 10, 13
Uma funçãoNome 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çãoTipo do
parâmetro
[self funcaoTDC:coloqueSuaVariavelAqui];
Chamando sua função
Wednesday, July 10, 13
Uma funçãoTipo 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çãoCriar variáveis com um valor
Printar esses valores
Criar uma função
Chamar essa função
Wednesday, July 10, 13
Uma funçãoCriar 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!Criando uma classe
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
@propertyreadwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
Wednesday, July 10, 13
.h - destaques
@propertyreadwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
Wednesday, July 10, 13
.h - destaques
@propertyreadwrite ou readonly
assign, retain ou copy
nonatomic ou atomic
=
Wednesday, July 10, 13
.h - destaques
@propertyreadwrite ou readonly
assign, retain ou copy
nonatomic ou atomicgetters e setters
automáticos
=
Wednesday, July 10, 13
.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...
LEAKWednesday, July 10, 13
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
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 = [Treinador alloc [init]]; }
Wednesday, July 10, 13
Por falar em dealloc- (void) teste{ Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; }
Treinador *ash
Wednesday, July 10, 13
Por falar em dealloc- (void) teste{ Treinador *ash = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; }
Treinador *ash
Wednesday, July 10, 13
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
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
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
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
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
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
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 = [Treinador alloc [init]]; }
Wednesday, July 10, 13
Dangling pointer- (void) teste{ Treinador *ash = [Treinador alloc [init]]; [ash release];
ash = nil; Treinador *gary = [Treinador alloc [init]]; }
Treinador *ash
Wednesday, July 10, 13
Dangling pointer- (void) teste{ Treinador *ash = [Treinador alloc [init]]; [ash release];
ash = nil; Treinador *gary = [Treinador alloc [init]]; }
Treinador *ash
Wednesday, July 10, 13
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
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
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
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
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
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
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
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
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
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 - releasealloc
Wednesday, July 10, 13
alloc - init - releasealloc
init
Wednesday, July 10, 13
alloc - init - releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
release
alloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
releaseWednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
Wednesday, July 10, 13
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
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
alloc - init - releasealloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
release
alloc
init
releasealloc
init
releasealloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
releasealloc
init
release
Wednesday, July 10, 13
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!
Wednesday, July 10, 13
Obigada pelo bate papo!
hannelita.com
Wednesday, July 10, 13