Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução - iOS - TDC SP 2013

Introdução - iOS - TDC SP 2013

Palestra no TDC SP 2013

hannelita

July 11, 2013
Tweet

More Decks by hannelita

Other Decks in Technology

Transcript

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

    iOS Isso não é um para- quedas, é uma maçã! Fuuu Wednesday, July 10, 13
  2. O que vamos ver aqui Desafios de qualquer desenvolvedor Por

    que ir para mobile e iOS? Wednesday, July 10, 13
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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 Wednesday, July 10, 13
  8. 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 Wednesday, July 10, 13
  9. 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
  10. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Wednesday, July 10, 13
  11. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Wednesday, July 10, 13
  12. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet Wednesday, July 10, 13
  13. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Wednesday, July 10, 13
  14. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Wednesday, July 10, 13
  15. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 Wednesday, July 10, 13
  16. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor Wednesday, July 10, 13
  17. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 Wednesday, July 10, 13
  18. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Wednesday, July 10, 13
  19. JDBC Hibernate 2 XML JPA Hibernate 3.1 Annotations JPA 2

    EclipseLink Hibernate 4 Servlet JSP Struts Struts 2 VRaptor JSF1 JSF 2 Richfaces Wednesday, July 10, 13
  20. 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 Wednesday, July 10, 13
  21. 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 Wednesday, July 10, 13
  22. 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 Wednesday, July 10, 13
  23. 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 Wednesday, July 10, 13
  24. 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 Wednesday, July 10, 13
  25. 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 Wednesday, July 10, 13
  26. 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 Wednesday, July 10, 13
  27. 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 Wednesday, July 10, 13
  28. 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 Wednesday, July 10, 13
  29. 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 Wednesday, July 10, 13
  30. 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 Wednesday, July 10, 13
  31. 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 Wednesday, July 10, 13
  32. 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 Wednesday, July 10, 13
  33. 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 Wednesday, July 10, 13
  34. 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 Wednesday, July 10, 13
  35. 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 Wednesday, July 10, 13
  36. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Wednesday, July 10, 13
  37. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django Wednesday, July 10, 13
  38. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD Wednesday, July 10, 13
  39. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim Wednesday, July 10, 13
  40. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim RSpec Wednesday, July 10, 13
  41. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim RSpec Mongo Wednesday, July 10, 13
  42. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Wednesday, July 10, 13
  43. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Wednesday, July 10, 13
  44. Tem mais! Oracle NoSQL Ruby Rails Sinatra Postgres Zend HTML

    CSS JS jQuery Python Django TDD vim RSpec Mongo Cassandra Node.js Meteor.js Wednesday, July 10, 13
  45. 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 Wednesday, July 10, 13
  46. 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 Wednesday, July 10, 13
  47. 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 Wednesday, July 10, 13
  48. 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 Wednesday, July 10, 13
  49. 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 Wednesday, July 10, 13
  50. 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 Wednesday, July 10, 13
  51. O iPhone A maçã de Adão e Eva dá dinheiro?

    Faça umas apps então <3 Wednesday, July 10, 13
  52. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit

    CoreGraphics CoreServices Wednesday, July 10, 13
  53. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit

    CoreGraphics CoreServices CoreLocation Wednesday, July 10, 13
  54. Desenvolvendo Objective C iOS Xcode SQLite Foundation C C++ UIKit

    CoreGraphics CoreServices CoreLocation ARC Wednesday, July 10, 13
  55. 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
  56. Crie um projeto File --> New --> Project Escolha Single

    View Application Pouco importam os nomes Salve num local adequado Wednesday, July 10, 13
  57. Procedural Criar variáveis com um valor Printar esses valores Criar

    uma função Chamar essa função Wednesday, July 10, 13
  58. Procedural Criar variáveis com um valor Printar esses valores Criar

    uma função Chamar essa função Wednesday, July 10, 13
  59. Procedural Criar variáveis com um valor Printar esses valores Criar

    uma função Chamar essa função Wednesday, July 10, 13
  60. Procedural Criar variáveis com um valor Printar esses valores Criar

    uma função Chamar essa função Wednesday, July 10, 13
  61. Uma função Criar variáveis com um valor Printar esses valores

    Criar uma função Chamar essa função Wednesday, July 10, 13
  62. Uma função Criar variáveis com um valor Printar esses valores

    Criar uma função Chamar essa função Wednesday, July 10, 13
  63. .h - destaques @property readwrite ou readonly assign, retain ou

    copy nonatomic ou atomic Wednesday, July 10, 13
  64. .h - destaques @property readwrite ou readonly assign, retain ou

    copy nonatomic ou atomic Wednesday, July 10, 13
  65. .h - destaques @property readwrite ou readonly assign, retain ou

    copy nonatomic ou atomic = Wednesday, July 10, 13
  66. .h - destaques @property readwrite ou readonly assign, retain ou

    copy nonatomic ou atomic getters e setters automáticos = Wednesday, July 10, 13
  67. 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
  68. Por falar em dealloc - (void) teste { Treinador *ash

    = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Wednesday, July 10, 13
  69. Por falar em dealloc - (void) teste { Treinador *ash

    = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  70. Por falar em dealloc - (void) teste { Treinador *ash

    = [Treinador alloc [init]]; [ash release]; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. Por falar em dealloc Por alguns instantes, gary apontará para

    ash! Dangling pointer Wednesday, July 10, 13
  78. Dangling pointer - (void) teste { Treinador *ash = [Treinador

    alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Wednesday, July 10, 13
  79. Dangling pointer - (void) teste { Treinador *ash = [Treinador

    alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  80. Dangling pointer - (void) teste { Treinador *ash = [Treinador

    alloc [init]]; [ash release]; ash = nil; Treinador *gary = [Treinador alloc [init]]; } Treinador *ash Wednesday, July 10, 13
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. init Se ocorreu algum problema na inicialização do objeto, não

    inicialize seus atributos Wednesday, July 10, 13
  91. alloc - init - release alloc init release alloc init

    release alloc init release Wednesday, July 10, 13
  92. alloc - init - release alloc init release alloc init

    release alloc init release alloc init release Wednesday, July 10, 13
  93. alloc - init - release alloc init release alloc init

    release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  94. 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
  95. alloc - 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
  96. 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 Wednesday, July 10, 13
  97. 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 Wednesday, July 10, 13
  98. 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 Wednesday, July 10, 13
  99. 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 Wednesday, July 10, 13
  100. 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 Wednesday, July 10, 13
  101. 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 Wednesday, July 10, 13
  102. 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 release Wednesday, July 10, 13
  103. 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 release alloc init release Wednesday, July 10, 13
  104. 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 release alloc init release alloc init release Wednesday, July 10, 13
  105. 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 release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  106. 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 release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  107. 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 release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  108. 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 release alloc init release alloc init release alloc init release alloc init release alloc init release alloc init release Wednesday, July 10, 13
  109. 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 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
  110. Por falar em alocar EquipeRocket *rocket = Só há uma

    equipe Rocket Wednesday, July 10, 13