Como usar seu para-quedas
Caso 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 m...
Programação
1990 -> 2000
Web!
Skill set
PHP
Apache
MySQL
Fácil!
JDBC
Hibernate 2
XML
JPA
Hibernate 3.1
Annotations
JPA 2
EclipseLink
Hibernate 4
Servlet
JSP
Struts
Struts 2
VRaptor
JSF1
...
Fácil, né?
Tem mais!
Oracle
NoSQL
Ruby
Rails
Sinatra
Postgres
Zend
HTML CSS
JS
jQuery
Python
Django
TDD vim
RSpec
Mongo
Cassandra
Nod...
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 iPhone
A 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!
Grupos para as
classes
Cuidado!
Não é criado um diretório!
.h
Atributos
.h
Métodos
.h - destaques
@property
readwrite ou readonly!
assign, retain ou copy!
nonatomic ou atomic
getters 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 creat...
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 = [Treinad...
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 = [...
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 - release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
alloc
init
release
allo...
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
hannelita@gmail.com
hannelita.com
Upcoming SlideShare
Loading in …5
×

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

414
-1

Published on

Palestra da trilha Mobile - TDC2014

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
414
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

TDC 2014 - 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
  2. 2. Oi! Hanneli (a.k.a. @hannelita)! Desenvolvedora! Jogos! Café e Pokémon <3
  3. 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
  4. 4. Programação
  5. 5. 1990 -> 2000 Web!
  6. 6. Skill set PHP Apache MySQL
  7. 7. Fácil!
  8. 8. 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
  9. 9. Fácil, né?
  10. 10. 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
  11. 11. Sou F... Dig Din
  12. 12. Só que não
  13. 13. 2000 -> hoje Mobile!
  14. 14. Seu dispositivo móvel Banco Email Personal Trainer Despertador Álbum de fotos Comunicação
  15. 15. A maçã
  16. 16. A maçã Aí, gata, tem WhatsApp?
  17. 17. O iPhone
  18. 18. O iPhone A maçã de Adão e Eva dá dinheiro? Faça umas apps então <3
  19. 19. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit CoreGraphics CoreServices CoreLocation ARC
  20. 20. Desenvolvendo
  21. 21. iOS Development [[[[ ]]]]
  22. 22. Desenvolvendo
  23. 23. Por onde começo? Mínimo de programação procedural
  24. 24. Não desista! Mínimo de programação procedural
  25. 25. Fácil, vai!
  26. 26. Próximo passo Mínimo de Orientação a Objetos
  27. 27. Próximo passo Criar uma classe! Criar atributos e métodos! Instanciar um objeto
  28. 28. Criando uma classe
  29. 29. Criando uma classe
  30. 30. Criando uma classe CRIE GRUPOS!
  31. 31. Grupos para as classes Cuidado! Não é criado um diretório!
  32. 32. .h Atributos
  33. 33. .h Métodos
  34. 34. .h - destaques @property readwrite ou readonly! assign, retain ou copy! nonatomic ou atomic getters e setters automáticos =
  35. 35. .m Indica a interface
  36. 36. .m “Sintetiza” as properties
  37. 37. .m Implementa os métodos
  38. 38. Visibilidade Todo método que está no .h é público
  39. 39. Até aqui, fácil!
  40. 40. Em Objective C... Tenho que fazer [alloc[init]]
  41. 41. Em Objective C... E precisa dar release também!
  42. 42. Em Objective C... E se não fizer?
  43. 43. Em Objective C... LEAK
  44. 44. Use release quando Houver um [alloc[init]]! Houver um [copy]! Qualquer método que remeta a um Factory pattern - [xxx create]
  45. 45. Use release! Nunca chame [pikachu dealloc]
  46. 46. dealloc Declaração do que deve ser feito ao desalocar o objeto
  47. 47. Por falar em dealloc dealloc [TreinadorPokemon alloc[init]];
  48. 48. Ajude a implementar!
  49. 49. Por falar em dealloc
  50. 50. Por falar em dealloc
  51. 51. 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
  52. 52. Por falar em dealloc Por alguns instantes, gary apontará para ash! Dangling pointer
  53. 53. 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
  54. 54. Suave!
  55. 55. Se há dealloc... Deve haver um init!
  56. 56. init Se ocorreu algum problema na inicialização do objeto, não inicialize seus atributos
  57. 57. 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 alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release
  58. 58. alloc - init - release
  59. 59. autorelease
  60. 60. autorelease
  61. 61. autorelease pool [[ ]autorelease]; Treinador *ash
  62. 62. Super fácil!
  63. 63. Por falar em alocar EquipeRocket *rocket = Só há uma equipe Rocket
  64. 64. Singleton CUIDADO
  65. 65. Pense na classe Armazena muita informação
  66. 66. Singleton Nem toda classe precisa ser um singleton!
  67. 67.
  68. 68. Open Source COCOAPODS <3
  69. 69. AFNetworking
  70. 70. AppCode
  71. 71. Obrigada pelo bate papo! @hannelita hannelita@gmail.com hannelita.com
  1. A particular slide catching your eye?

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

×