TDC 2014 - Como usar seu para-quedas caso você caia no mundo de iOS

Preview:

DESCRIPTION

Palestra da trilha Mobile - TDC2014

Citation preview

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

Email

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!

Open Source

COCOAPODS

<3

AFNetworking

AppCode

Obrigada pelo bate papo!

@hannelitahannelita@gmail.com

hannelita.com