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

Preview:

DESCRIPTION

Palestra TDC 2013 - São Paulo - Trilha iOS

Citation preview

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

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 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

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!

@hannelitahannelita@gmail.com

Wednesday, July 10, 13

Obigada pelo bate papo!

@hannelitahannelita@gmail.com

hannelita.com

Wednesday, July 10, 13