SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
Dev e lo p in g iP h o n e
  A ppl i c a t i ons i n




                               Paul	
  Rayner

                          AGILITY.	
  CRAFT.	
  ARCHITECTURE.
Tuesday, March 16, 2010
Why the
iPhone?




Tuesday, March 16, 2010
Why the
iPhone?




Tuesday, March 16, 2010
Tools




Tuesday, March 16, 2010
Distributing Apps
Tuesday, March 16, 2010
Tuesday, March 16, 2010
MonoTouch Tools




Tuesday, March 16, 2010
MonoTouch Tools




Tuesday, March 16, 2010
MonoTouch Tools




Tuesday, March 16, 2010
Demo :: Getting Started




Tuesday, March 16, 2010
Demo :: Getting Started




Tuesday, March 16, 2010
iPhone Constraints




Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps




Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources




Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  pa8erns



Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  pa8erns
•Only	
  one	
  applica;on	
  can	
  run	
  at	
  a	
  ;me


Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  pa8erns
•Only	
  one	
  applica;on	
  can	
  run	
  at	
  a	
  ;me
•Handle	
  device	
  differences	
  gracefully

Tuesday, March 16, 2010
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  pa8erns
•Only	
  one	
  applica;on	
  can	
  run	
  at	
  a	
  ;me
•Handle	
  device	
  differences	
  gracefully
•Devs:	
  No	
  JIT	
  compila;on,	
  no	
  scrip;ng
Tuesday, March 16, 2010
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
  ! !    !   !  !   !  !   !  !   !     ! !  !  !  !   !   !  !  !   !
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !     ! !  !  !  !   !   !  !  !   !
   timeoutInterval:60.0];
                                   Text
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
  ! !    !   !  !   !  !   !  !   !     ! !  !  !  !   !   !  !  !   !
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !     ! !  !  !  !   !   !  !  !   !
   timeoutInterval:60.0];
                                   Text
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
  ! !    !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !
   timeoutInterval:60.0];
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://

  ! !
         no	
  more	
  memory
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
         !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !
   timeoutInterval:60.0];
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://

  ! !
     no	
  more	
  memory
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
         !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !

    •No	
  automa3c	
  objects	
  on	
  the	
  stack.
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !
   timeoutInterval:60.0];
                           !  !   !  !   !   !  !  !   !   !  !  !   !

  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://

  ! !
     no	
  more	
  memory
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
         !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !

    •No	
  automa3c	
  objects	
  on	
  the	
  stack.
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !

    •No	
  garbage	
  collector	
  (manual	
  memory	
  
   timeoutInterval:60.0];
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
     management)
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"http://

  ! !
     no	
  more	
  memory
  virtualgenius:dummypassword@twitter.com/statuses/update.xml"]
         !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !

    •No	
  automa3c	
  objects	
  on	
  the	
  stack.
   cachePolicy:NSURLRequestUseProtocolCachePolicy
  ! !    !   !  !   !  !   !  !   !  !   !   !  !  !   !   !  !  !   !

    •No	
  garbage	
  collector	
  (manual	
  memory	
  
   timeoutInterval:60.0];
  ! [theRequest setHTTPMethod:@"POST"];
  ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@",
     management)
  themessage] dataUsingEncoding:NSASCIIStringEncoding]];
  ! NSURLResponse* response;
  ! NSError* error;
  ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
  returningResponse:&response error:&error];
  ! NSLog(@"%@", [[[NSString alloc] initWithData:result
  encoding:NSASCIIStringEncoding] autorelease]);




Tuesday, March 16, 2010
MonoTouch Limitations




Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng




Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me




Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  not	
  available




Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  not	
  available
         No	
  support	
  for	
  System.Run3me.Remo3ng




Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  not	
  available
         No	
  support	
  for	
  System.Run3me.Remo3ng
         No	
  support	
  for	
  DLR	
  languages	
  (eg.	
  IronRuby,	
  
         IronPython)



Tuesday, March 16, 2010
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  not	
  available
         No	
  support	
  for	
  System.Run3me.Remo3ng
         No	
  support	
  for	
  DLR	
  languages	
  (eg.	
  IronRuby,	
  
         IronPython)
         See	
  hJp://monotouch.net/Documenta3on/
         Limita3ons

Tuesday, March 16, 2010
Sample App
Walkthrough




Tuesday, March 16, 2010
What’s Next?




                          15

Tuesday, March 16, 2010
What’s Next?




                          15

Tuesday, March 16, 2010
What’s Next?




                          15

Tuesday, March 16, 2010
What’s Next?




                          15

Tuesday, March 16, 2010
iPhone	
  development	
  is	
  
challenging




Tuesday, March 16, 2010
iPhone	
  development	
  is	
  
challenging




              MonoTouch	
  ==	
  	
  Goodness
Tuesday, March 16, 2010
Questions




Tuesday, March 16, 2010
Resources




Tuesday, March 16, 2010
Resources




Tuesday, March 16, 2010
Resources




Tuesday, March 16, 2010
Resources




       http://delicious.com/virtualgenius/monotouch
Tuesday, March 16, 2010
Thank You…
                          Paul	
  Rayner
                          paul@virtual-genius.com
                          www.virtual-genius.com
                          http://twitter.com/virtualgenius




                                                             AGILITY.	
  CRAFT.	
  ARCHITECTURE.
Tuesday, March 16, 2010
References
     • http://www.amazon.com/Building-iPhone-Applications-Developer-
       MonoTouch/dp/B003A6RCF2
     • iPhone image: http://ke2yk.wordpress.com/2009/03/22/first-it-was-cw-
       now-its-the-question-pool/
     • iPhone sales chart: http://en.wikipedia.org/wiki/IPhone
     • Monotouch home page: http://monotouch.net/
     • MacBook Pro: http://www.apple.com/macbookpro/
     • iPhone Dev Center Logo: http://developer.apple.com/iphone/index.action
     • Mono logo: www.mono-project.net
     • Objective C memory management: http://cocoadevcentral.com/d/
       learn_objectivec/
     • Microphone: http://www.faqs.org/photo-dict/phrase/377/microphone.html
     • App store logo: http://www.apple.com/iphone/apps-for-iphone/
     • Android developer logo: http://developer.android.com/index.html
     • Head First iPhone Development: http://oreilly.com/catalog/9780596803551




Tuesday, March 16, 2010

Mais conteúdo relacionado

Último

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 

Último (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Developing iPhone Applications In .Net - March 16 SDC2010

  • 1. Dev e lo p in g iP h o n e A ppl i c a t i ons i n Paul  Rayner AGILITY.  CRAFT.  ARCHITECTURE. Tuesday, March 16, 2010
  • 10. Demo :: Getting Started Tuesday, March 16, 2010
  • 11. Demo :: Getting Started Tuesday, March 16, 2010
  • 13. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps Tuesday, March 16, 2010
  • 14. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources Tuesday, March 16, 2010
  • 15. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources •Different  usage  pa8erns Tuesday, March 16, 2010
  • 16. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources •Different  usage  pa8erns •Only  one  applica;on  can  run  at  a  ;me Tuesday, March 16, 2010
  • 17. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources •Different  usage  pa8erns •Only  one  applica;on  can  run  at  a  ;me •Handle  device  differences  gracefully Tuesday, March 16, 2010
  • 18. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources •Different  usage  pa8erns •Only  one  applica;on  can  run  at  a  ;me •Handle  device  differences  gracefully •Devs:  No  JIT  compila;on,  no  scrip;ng Tuesday, March 16, 2010
  • 19. Cocoa & Objective-C ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! timeoutInterval:60.0]; Text ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 20. Cocoa & Objective-C ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! timeoutInterval:60.0]; Text ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 21. Cocoa & Objective-C ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! timeoutInterval:60.0]; ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 22. Cocoa & Objective-C •When  there  is  no  more  memory,  there  is   ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// ! ! no  more  memory virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! timeoutInterval:60.0]; ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 23. Cocoa & Objective-C •When  there  is  no  more  memory,  there  is   ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// ! ! no  more  memory virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! •No  automa3c  objects  on  the  stack. cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! timeoutInterval:60.0]; ! ! ! ! ! ! ! ! ! ! ! ! ! ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 24. Cocoa & Objective-C •When  there  is  no  more  memory,  there  is   ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// ! ! no  more  memory virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! •No  automa3c  objects  on  the  stack. cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! •No  garbage  collector  (manual  memory   timeoutInterval:60.0]; ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", management) themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 25. Cocoa & Objective-C •When  there  is  no  more  memory,  there  is   ! NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:// ! ! no  more  memory virtualgenius:dummypassword@twitter.com/statuses/update.xml"] ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! •No  automa3c  objects  on  the  stack. cachePolicy:NSURLRequestUseProtocolCachePolicy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! •No  garbage  collector  (manual  memory   timeoutInterval:60.0]; ! [theRequest setHTTPMethod:@"POST"]; ! [theRequest setHTTPBody:[[NSString stringWithFormat:@"status=%@", management) themessage] dataUsingEncoding:NSASCIIStringEncoding]]; ! NSURLResponse* response; ! NSError* error; ! NSData* result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; ! NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]); Tuesday, March 16, 2010
  • 27. MonoTouch Limitations •No  JIT  or  scrip3ng Tuesday, March 16, 2010
  • 28. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me Tuesday, March 16, 2010
  • 29. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me System.Reflec3on.Emit  not  available Tuesday, March 16, 2010
  • 30. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me System.Reflec3on.Emit  not  available No  support  for  System.Run3me.Remo3ng Tuesday, March 16, 2010
  • 31. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me System.Reflec3on.Emit  not  available No  support  for  System.Run3me.Remo3ng No  support  for  DLR  languages  (eg.  IronRuby,   IronPython) Tuesday, March 16, 2010
  • 32. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me System.Reflec3on.Emit  not  available No  support  for  System.Run3me.Remo3ng No  support  for  DLR  languages  (eg.  IronRuby,   IronPython) See  hJp://monotouch.net/Documenta3on/ Limita3ons Tuesday, March 16, 2010
  • 34. What’s Next? 15 Tuesday, March 16, 2010
  • 35. What’s Next? 15 Tuesday, March 16, 2010
  • 36. What’s Next? 15 Tuesday, March 16, 2010
  • 37. What’s Next? 15 Tuesday, March 16, 2010
  • 38. iPhone  development  is   challenging Tuesday, March 16, 2010
  • 39. iPhone  development  is   challenging MonoTouch  ==    Goodness Tuesday, March 16, 2010
  • 44. Resources http://delicious.com/virtualgenius/monotouch Tuesday, March 16, 2010
  • 45. Thank You… Paul  Rayner paul@virtual-genius.com www.virtual-genius.com http://twitter.com/virtualgenius AGILITY.  CRAFT.  ARCHITECTURE. Tuesday, March 16, 2010
  • 46. References • http://www.amazon.com/Building-iPhone-Applications-Developer- MonoTouch/dp/B003A6RCF2 • iPhone image: http://ke2yk.wordpress.com/2009/03/22/first-it-was-cw- now-its-the-question-pool/ • iPhone sales chart: http://en.wikipedia.org/wiki/IPhone • Monotouch home page: http://monotouch.net/ • MacBook Pro: http://www.apple.com/macbookpro/ • iPhone Dev Center Logo: http://developer.apple.com/iphone/index.action • Mono logo: www.mono-project.net • Objective C memory management: http://cocoadevcentral.com/d/ learn_objectivec/ • Microphone: http://www.faqs.org/photo-dict/phrase/377/microphone.html • App store logo: http://www.apple.com/iphone/apps-for-iphone/ • Android developer logo: http://developer.android.com/index.html • Head First iPhone Development: http://oreilly.com/catalog/9780596803551 Tuesday, March 16, 2010