Dev e lo p in g iP h o n e
  A ppl i c a t i ons i n




                               Paul	
  Rayner

                  ...
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, ...
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  p...
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  p...
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  p...
iPhone Constraints
•iPhone	
  apps	
  are	
  not	
  small	
  desktop	
  apps
•Limited	
  resources
•Different	
  usage	
  p...
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"htt...
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"htt...
Cocoa & Objective-C
  ! NSMutableURLRequest *theRequest = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@"htt...
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theReque...
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theReque...
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theReque...
Cocoa & Objective-C
    •When	
  there	
  is	
  no	
  more	
  memory,	
  there	
  is	
  
  ! NSMutableURLRequest *theReque...
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	
  no...
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  no...
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  no...
MonoTouch Limitations

•No	
  JIT	
  or	
  scrip3ng
•No	
  code	
  gen	
  at	
  run3me
         System.Reflec3on.Emit	
  no...
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
                    ...
References
     • http://www.amazon.com/Building-iPhone-Applications-Developer-
       MonoTouch/dp/B003A6RCF2
     • iPho...
Upcoming SlideShare
Loading in …5
×

Developing iPhone Applications In .Net - March 16 SDC2010

1,319 views

Published on

iPhone development opens up a world of opportunities for developers that invest the time to learn this exciting platform. And Monotouch allows developers to create C# and .NET-based applications that run on the iPhone while taking advantage of the iPhone API’s and their existing libraries and skills.

Experience a quick start to iPhone application development using the language and libraries that you are already familiar with, and prepare to learn something new about how to use what the iPhone API’s have to offer. Gain a solid understanding of the basics of iPhone development in .NET, and get up and running quickly building the next killer iPhone app.

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,319
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Developing iPhone Applications In .Net - March 16 SDC2010

  1. 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
  2. 2. Why the iPhone? Tuesday, March 16, 2010
  3. 3. Why the iPhone? Tuesday, March 16, 2010
  4. 4. Tools Tuesday, March 16, 2010
  5. 5. Distributing Apps Tuesday, March 16, 2010
  6. 6. Tuesday, March 16, 2010
  7. 7. MonoTouch Tools Tuesday, March 16, 2010
  8. 8. MonoTouch Tools Tuesday, March 16, 2010
  9. 9. MonoTouch Tools Tuesday, March 16, 2010
  10. 10. Demo :: Getting Started Tuesday, March 16, 2010
  11. 11. Demo :: Getting Started Tuesday, March 16, 2010
  12. 12. iPhone Constraints Tuesday, March 16, 2010
  13. 13. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps Tuesday, March 16, 2010
  14. 14. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources Tuesday, March 16, 2010
  15. 15. iPhone Constraints •iPhone  apps  are  not  small  desktop  apps •Limited  resources •Different  usage  pa8erns Tuesday, March 16, 2010
  16. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  26. 26. MonoTouch Limitations Tuesday, March 16, 2010
  27. 27. MonoTouch Limitations •No  JIT  or  scrip3ng Tuesday, March 16, 2010
  28. 28. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me Tuesday, March 16, 2010
  29. 29. MonoTouch Limitations •No  JIT  or  scrip3ng •No  code  gen  at  run3me System.Reflec3on.Emit  not  available Tuesday, March 16, 2010
  30. 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. 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. 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
  33. 33. Sample App Walkthrough Tuesday, March 16, 2010
  34. 34. What’s Next? 15 Tuesday, March 16, 2010
  35. 35. What’s Next? 15 Tuesday, March 16, 2010
  36. 36. What’s Next? 15 Tuesday, March 16, 2010
  37. 37. What’s Next? 15 Tuesday, March 16, 2010
  38. 38. iPhone  development  is   challenging Tuesday, March 16, 2010
  39. 39. iPhone  development  is   challenging MonoTouch  ==    Goodness Tuesday, March 16, 2010
  40. 40. Questions Tuesday, March 16, 2010
  41. 41. Resources Tuesday, March 16, 2010
  42. 42. Resources Tuesday, March 16, 2010
  43. 43. Resources Tuesday, March 16, 2010
  44. 44. Resources http://delicious.com/virtualgenius/monotouch Tuesday, March 16, 2010
  45. 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. 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

×