SlideShare une entreprise Scribd logo
1  sur  82
Cinco (ou mais) coisas
 que você gostaria de
      saber sobre
   iOS e Objective-C
Algumas coisas marotas
  que você gostaria de
      saber sobre
   iOS e Objective-C
Ricardo
Valeriano
@sr_valeriano
github.com/ricardovaleriano




ruby, javascript, java, ios, web, agile
Diego
Chohfi
@dchohfi
github.com/dchohfi




java, ios, web, mío cozido...
Sobre esse talk...
Não é (muito) específico
Nem (de longe) esgota os
       assuntos
iOS
Cocoa Touch


Media Layer


Core Services


  Core OS
iOS


Cocoa Touch
Media Layer
Core Services
  Core OS
iOS
Sistema Operacional

      Cocoa Touch
      Media Layer
      Core Services
        Core OS
iOS
           Media Layer

Graphic

Audio

Video

Air Play
Player de música
om
                   c
Player de música do ks
                in ea
               g p
              a r
             r e
            e
           t w
         In po
AV Foundation
Objective-C:
linguagem dinâmica
Objective-C:
                      o            ”
linguagem dinâmica ot          in
                                  g
                       r s
                     a i     s
                   m m
                o d
              e      o
                 t h
                e
            “ m
Epa! Dinâmica!?
Tipo... Runtime Stuff!?
Tipo... Runtime Black Magic!?
Let me kibar um slide...


@dchohfi
github.com/dchohfi
Tipagem dinâmica,

      Podemos chamar um método que não está
            declarado na sua interface.


 Pato* patoFeio = [[Pato alloc] init];



 [patoFeio late]; -> warning, não error.
Tipagem dinâmica,

      Podemos chamar um método que não está
            declarado na sua interface.


 Pato* patoFeio = [[Pato alloc] init];
                                           OMG
 [patoFeio late]; -> warning, não error.
NSString *str= @"EhBrinksNeh?"
SEL sel= NSSelectorFromString(str);
[self performSelector:sel
           withObject:@"OMGLoL"];
‘humans require
more sophisticated tools
            to program’
                   Matz
Ruby Builder
require 'rubygems'
require 'builder'

builder = Builder::XmlMarkup.new({
            target: STDOUT, indent: 2 })
builder.person do |x|
  x.name("Jim")
  x.phone("555-1234")
end

#
# Prints:
# <person>
#   <name>Jim</name>
#   <phone>555-1234</phone>
# </person>
require 'rubygems'
require 'builder'

builder = Builder::XmlMarkup.new({
            target: STDOUT, indent: 2 })
builder.person do |x|
  x.name("Jim")
  x.phone("555-1234")
end

#
# Prints:
# <person>
#   <name>Jim</name>
#   <phone>555-1234</phone>
# </person>
require 'rubygems'
require 'builder'

builder = Builder::XmlMarkup.new({
            target: STDOUT, indent: 2 })
builder.person do |x|
  x.name("Jim")
  x.phone("555-1234")
end

#
# Prints:
# <person>
#   <name>Jim</name>
#   <phone>555-1234</phone>
# </person>
require 'rubygems'
require 'builder'

builder = Builder::XmlMarkup.new({
            target: STDOUT, indent: 2 })
builder.person do |x|
  x.name("Jim")
  x.phone("555-1234")
end

#
# Prints:
# <person>
#   <name>Jim</name>
#   <phone>555-1234</phone>
# </person>
require 'rubygems'
require 'builder'

builder = Builder::XmlMarkup.new({
            target: STDOUT, indent: 2 })
builder.person do |x|
  x.name("Jim")
  x.phone("555-1234")
end

#
# Prints:
# <person>
#   <name>Jim</name>
#   <phone>555-1234</phone>
# </person>
outro kibado


@dchohfi
github.com/dchohfi
Você pode delegar a chamada do método para
outro objeto, um atributo por exemplo:
                    -(id)forwardingTargetForSelector:(SEL)selector;
Você pode delegar a chamada do método para
outro objeto, um atributo por exemplo:
                    -(id)forwardingTargetForSelector:(SEL)selector;




                E o method_missing?
Você pode delegar a chamada do método para
outro objeto, um atributo por exemplo:
                                 -(id)forwardingTargetForSelector:(SEL)selector;




                           E o method_missing?

  - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;




NSMethodSignature é a compilação do SEL
Você pode delegar a chamada do método para
outro objeto, um atributo por exemplo:
                                 -(id)forwardingTargetForSelector:(SEL)selector;




                           E o method_missing?

  - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;




NSMethodSignature é a compilação do SEL


                         -(void)forwardInvocation:(NSInvocation *)anInvocation;




 forwardInvocation é o nosso method_missing :P
Post sobre o assunto

http://www.akitaonrails.com
/2010/12/06/
objective-c-method-missing
#.UBzm3KkhcXc
Testes automatizados
Testes automatizados ac    e
                       r f
                    t e
                 in
             d e
Por que?
Para ter certeza que funfa. XD
Para ter certeza que funfa. XD
CUIDADO!
Proximidade de clichê detectada.
UI Automation
UI Automation
JavaScript
#TodosConhece
#TodosPrograma
#TodosAma
JavaScript
#TodosConhece
#TodosPrograma
#TodosAma
JavaScript
#TodosConhece
#TodosPrograma
#TodosOdía
UI Automation
Reference Collection
LogFail? LogPass?
var target = UIATarget.localTarget();

UIALogger.logStart("go to original position");
target.tap({x:100, y:200});

if (field.rect()["origin"]["y"] == position)
! UIALogger.logPass("ok");
else
! UIALogger.logFail("Nok");
LogFail? LogPass?
var target = UIATarget.localTarget();

UIALogger.logStart("go to original position");
target.tap({x:100, y:200});

if (field.rect()["origin"]["y"] == position)
! UIALogger.logPass("ok");
else
! UIALogger.logFail("Nok");
LogFail? LogPass?
var target = UIATarget.localTarget();

UIALogger.logStart("go to original position");
target.tap({x:100, y:200});

if (field.rect()["origin"]["y"] == position)
! UIALogger.logPass("ok");
else
! UIALogger.logFail("Nok");
LogFail? LogPass?
var target = UIATarget.localTarget();

UIALogger.logStart("go to original position");
target.tap({x:100, y:200});

if (field.rect()["origin"]["y"] == position)
! UIALogger.logPass("ok");
else
! UIALogger.logFail("Nok");
#PELAMORDEDEUS
     #PFVR
MOSTRA CÓDIGO?
var   target= UIATarget.localTarget();
var   app= target.frontMostApp();
var   window= app.mainWindow();
var   controls= window.segmentedControls();
var   segmented= controls[0];

segmented.buttons()[0].tap();
var   target= UIATarget.localTarget();
var   app= target.frontMostApp();
var   window= app.mainWindow();
var   controls= window.segmentedControls();
var   segmented= controls[0];

segmented.buttons()[0].tap();
ow();
var
controls=
window.segme
ntedControls
();
var   target= UIATarget.localTarget();
var   app= target.frontMostApp();
var   window= app.mainWindow();
var   controls= window.segmentedControls();
var   segmented= controls[0];

segmented.buttons()[0].tap();
Ruby!
o vo”
Ruby!              e ti
                  n a
                io er
               t t
              o n
            yM “i
         b r
       u o
      R ad
        u l
     im
RubyMotion
RubyMotion
Ruby + iOS = <3
Ruby + iOS = <3
Environment?
Obrigado!

Ricardo
Valeriano
@sr_valeriano
github.com/ricardovaleriano




ruby, javascript, java, ios, web, agile

Contenu connexe

Tendances

Web Scraping com F Sharp
Web Scraping com F SharpWeb Scraping com F Sharp
Web Scraping com F SharpPOANETMeetup
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Ismar Silveira
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoPaulo Morgado
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem Capolllorj
 
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetosxbacon
 

Tendances (20)

Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Web Scraping com F Sharp
Web Scraping com F SharpWeb Scraping com F Sharp
Web Scraping com F Sharp
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3
 
Clean code
Clean codeClean code
Clean code
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
As Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPontoAs Novidades Do C# 4.0 - NetPonto
As Novidades Do C# 4.0 - NetPonto
 
Linguagem C - Entrada e Saída
Linguagem C - Entrada e SaídaLinguagem C - Entrada e Saída
Linguagem C - Entrada e Saída
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetos
 

En vedette

Регистрация юридического лица для вашего ЛК
Регистрация юридического лица для вашего ЛКРегистрация юридического лица для вашего ЛК
Регистрация юридического лица для вашего ЛКIvanova Olga
 
Profiting From Green How To Make Your Business More Energy Efficient Sitk...
Profiting From Green   How To Make Your Business More Energy Efficient   Sitk...Profiting From Green   How To Make Your Business More Energy Efficient   Sitk...
Profiting From Green How To Make Your Business More Energy Efficient Sitk...kevinbak
 
Seeing the light
Seeing the lightSeeing the light
Seeing the lightmrrayner
 
ack Hutchins Foundation Portfolio Media
ack Hutchins Foundation Portfolio Mediaack Hutchins Foundation Portfolio Media
ack Hutchins Foundation Portfolio MediaWesthatchmediastudies
 

En vedette (8)

Регистрация юридического лица для вашего ЛК
Регистрация юридического лица для вашего ЛКРегистрация юридического лица для вашего ЛК
Регистрация юридического лица для вашего ЛК
 
Profiting From Green How To Make Your Business More Energy Efficient Sitk...
Profiting From Green   How To Make Your Business More Energy Efficient   Sitk...Profiting From Green   How To Make Your Business More Energy Efficient   Sitk...
Profiting From Green How To Make Your Business More Energy Efficient Sitk...
 
Marketing a fake band
Marketing a fake bandMarketing a fake band
Marketing a fake band
 
6.2.4
6.2.46.2.4
6.2.4
 
Day 29
Day 29Day 29
Day 29
 
Seeing the light
Seeing the lightSeeing the light
Seeing the light
 
Drupal
DrupalDrupal
Drupal
 
ack Hutchins Foundation Portfolio Media
ack Hutchins Foundation Portfolio Mediaack Hutchins Foundation Portfolio Media
ack Hutchins Foundation Portfolio Media
 

Similaire à Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o Objective-C.

Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOSRicardo Valeriano
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessRafael Farias Silva
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol GynLuís Cobucci
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)Ricardo Valeriano
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyRodrigo Martins
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptLoiane Groner
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem KotlinCalebeMiquissene
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidSuelen Carvalho
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSAndrei Rosseti
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 

Similaire à Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o Objective-C. (20)

JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Android 2303
Android 2303Android 2303
Android 2303
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
 
(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn(Re)pensando a OOP - Flisol Gyn
(Re)pensando a OOP - Flisol Gyn
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
 
Sua primeira app iOS
 Sua primeira app iOS Sua primeira app iOS
Sua primeira app iOS
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com Ruby
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScript
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem Kotlin
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app Android
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Introdução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOSIntrodução ao desenvolvimento para iOS
Introdução ao desenvolvimento para iOS
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 

Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o Objective-C.

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. Just tell me why!!!\n
  13. AV Foundation Framework\nIntroduced in iOS 2.2, the AV Foundation framework (AVFoundation.framework) contains Objective-C classes for playing audio content. You can use these classes to play file- or memory-based sounds of any duration. You can play multiple sounds simultaneously and control various playback aspects of each sound. In iOS 3.0 and later, this framework also includes support for recording audio and managing audio session information.\nIn iOS 4.0 and later, the services offered by this framework were expanded to include:\nMedia asset management\nMedia editing\nMovie capture\nMovie playback\nTrack management\nMetadata management for media items\nStereophonic panning\nPrecise synchronization between sounds\nAn Objective-C interface for determining details about sound files, such as the data format, sample rate, and number of channels\nIn iOS 5, the AV Foundation framework includes support for streaming audio and video content over AirPlay using the AVPlayer class. AirPlay support is enabled by default, but applications can opt out as needed.\nThe AV Foundation framework is a single source for recording and playing back audio and video in iOS. This framework also provides much more sophisticated support for handling and managing media items than higher-level frameworks.\nFor more information about the classes of the AV Foundation framework, see AV Foundation Framework Reference.\n
  14. Just tell me why!!!\n
  15. \n
  16. \n
  17. \n
  18. \n
  19. Palestra no self sp, bem fera sobre o assunto... t&amp;#xE1; nas interwebs mas n&amp;#xE3;o lembro aonde XD\n
  20. \n
  21. Mas se voc&amp;#xEA; for pregui&amp;#xE7;oso como eu e quiser usar o ARC\n
  22. Just tell me why!!!\n
  23. a medida em que os problemas evoluem...\n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. Palestra no self sp, bem fera sobre o assunto... t&amp;#xE1; nas interwebs mas n&amp;#xE3;o lembro aonde XD\n
  30. Show me the code\n
  31. Show me the code\n
  32. Show me the code\n
  33. Show me the code\n
  34. &amp;#xC9;, eu fiz isso sim (url no slide).\n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. D&amp;#xE1; para medir qualidade de c&amp;#xF3;digo?\n
  41. \n
  42. &amp;#xC9; p&amp;#xE9;ssimo, mais uma p&amp;#xE1; conhec&amp;#xEA;, todos acha ruim, todos odeia!\n
  43. &amp;#xC9; p&amp;#xE9;ssimo, mais uma p&amp;#xE1; conhec&amp;#xEA;, todos acha ruim, todos odeia!\n
  44. \n
  45. \n
  46. O c&amp;#xF3;digo &amp;#xE9; meio cru... muita coisa feita na unha.\n
  47. O c&amp;#xF3;digo &amp;#xE9; meio cru... muita coisa feita na unha.\n
  48. O c&amp;#xF3;digo &amp;#xE9; meio cru... muita coisa feita na unha.\n
  49. Tem at&amp;#xE9; os screenshots se der xabu.\nShow me the code.\n
  50. Tem at&amp;#xE9; os screenshots se der xabu.\nShow me the code.\n
  51. Tem at&amp;#xE9; os screenshots se der xabu.\nShow me the code.\n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. T&amp;#xE1; a&amp;#xED; o c&amp;#xF3;digo, j&amp;#xE1; t&amp;#xE1; b&amp;#xE3;o?\n
  58. \n
  59. motion create projeto\nrake #builda\nrake -T\nrake spec\n\napp/app_delegate.rb\n@window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds;\n@window.backgroundColor = UIColor.whiteColor\n@window.makeKeyAndVisible\n\nrake spec\n\ntv= UITableViewController.alloc.init\nnav= UINavigationController.alloc.initWithRootViewController tv\n@window.rootViewController= nav\n\nrake\n&gt; a = Array.new\n&gt; a.push &quot;borba&quot;\n&gt; a.insertObject &quot;xpto&quot;, atIndex:0\n\nCommand + mouse over\n\n&gt; btn= UIBarButtonItem.alloc.init\n&gt; btn.title= &amp;#x201C;opalhes&amp;#x201D;\n&gt; self.nextResponder\n&gt; self.nextResponder.navigationItem.rightBarButtonItem= btn\n
  60. \n
  61. \n
  62. oh! cheiro de coisa boa!\n
  63. \n
  64. oh! cheiro de coisa boa!\n
  65. \n
  66. motion create projeto\nrake #builda\nrake -T\nrake spec\n\napp/app_delegate.rb\n@window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds;\n@window.backgroundColor = UIColor.whiteColor\n@window.makeKeyAndVisible\n\nrake spec\n\ntv= UITableViewController.alloc.init\nnav= UINavigationController.alloc.initWithRootViewController tv\n@window.rootViewController= nav\n\nrake\n&gt; a = Array.new\n&gt; a.push &quot;borba&quot;\n&gt; a.insertObject &quot;xpto&quot;, atIndex:0\n\nCommand + mouse over\n\n&gt; btn= UIBarButtonItem.alloc.init\n&gt; btn.title= &amp;#x201C;opalhes&amp;#x201D;\n&gt; self.nextResponder\n&gt; self.nextResponder.navigationItem.rightBarButtonItem= btn\n
  67. \n