Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

748 views

Published on

Palestra da trilha Mobile - TDC2014

Published in: Technology

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

×