TDC 2014 - Como usar seu para-quedas caso você caia no mundo de iOS
-
Upload
hanneli-tavante -
Category
Technology
-
view
271 -
download
2
description
Transcript of TDC 2014 - Como usar seu para-quedas caso você caia no mundo de iOS
Como usar seu para-quedasCaso você caia no mundo de iOS
Isso não é um para-quedas,
é uma maçã! Fuuu
Oi!
Hanneli (a.k.a. @hannelita)!
Desenvolvedora!
Jogos!
Café e Pokémon <3
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
Programação
1990 -> 2000
Web!
Skill set
PHP
Apache
MySQL
Fácil!
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
Fácil, né?
Tem mais!
Oracle
NoSQLRubyRailsSinatraPostgres
ZendHTML CSS
JS
jQuery
PythonDjango
TDD vimRSpecMongo
CassandraNode.jsMeteor.js Backbone.js
Neo4jRedis
HerokuGit
Torquebox
Sou F...
Dig Din
Só que não
2000 -> hoje
Mobile!
Seu dispositivo móvel
Banco
Personal Trainer
Despertador
Álbum de fotos
Comunicação
A maçã
A maçã
Aí, gata, tem WhatsApp?
O iPhone
O iPhoneA maçã de
Adão e Eva dá dinheiro?
Faça umas apps então <3
Desenvolvendo
Objective C
iOS
Xcode
SQLite
Foundation
C
C++
UIKit CoreGraphics
CoreServices
CoreLocation
ARC
Desenvolvendo
iOS Development
[[[[ ]]]]
Desenvolvendo
Por onde começo?
Mínimo de programação
procedural
Não desista!
Mínimo de programação
procedural
Fácil, vai!
Próximo passo
Mínimo de Orientação a
Objetos
Próximo passo
Criar uma classe!
Criar atributos e métodos!
Instanciar um objeto
Criando uma classe
Criando uma classe
Criando uma classe
CRIE GRUPOS!Criando uma classe
Grupos para as classes
Cuidado!
Não é criado um diretório!
.h
Atributos
.h
Métodos
.h - destaques
@propertyreadwrite ou readonly!
assign, retain ou copy!
nonatomic ou atomicgetters e setters
automáticos
=
.m
Indica a interface
.m
“Sintetiza” as properties
.m
Implementa os métodos
Visibilidade
Todo método que está no .h é
público
Até aqui, fácil!
Em Objective C...
Tenho que fazer [alloc[init]]
Em Objective C...
E precisa dar release também!
Em Objective C...
E se não fizer?
Em Objective C...
LEAK
Use release quando
Houver um [alloc[init]]!
Houver um [copy]!
Qualquer método que remeta a um Factory pattern - [xxx create]
Use release!
Nunca chame [pikachu dealloc]
dealloc
Declaração do que deve ser feito ao
desalocar o objeto
Por falar em dealloc
dealloc
[TreinadorPokemon alloc[init]];
Ajude a implementar!
Por falar em dealloc
Por falar em dealloc
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
Por falar em dealloc
Por alguns instantes, gary apontará para ash!
Dangling pointer
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
Suave!
Se há dealloc...
Deve haver um init!
init
Se ocorreu algum problema na
inicialização do objeto, não inicialize seus
atributos
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
alloc - init - release
autorelease
autorelease
autorelease pool
[[ ]autorelease];
Treinador *ash
Super fácil!
Por falar em alocar
EquipeRocket *rocket =
Só há uma equipe Rocket
Singleton
CUIDADO
Pense na classe
Armazena muita informação
Singleton
Nem toda classe precisa ser um
singleton!
Rá
Open Source
COCOAPODS
<3
AFNetworking
AppCode
Obrigada pelo bate papo!
hannelita.com