C# on the iPhone with MonoTouch Glasgow

1,242
-1

Published on

My slides from C# on the iPhone at DDD Scotland on 8th May 2010.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,242
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
24
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Good afternoon, I’m going to talk a little bit about C# on the iPhone with Monotouch. I’m Chris Hardy and you go follow me on twitter @ chrisntr.
  • Good afternoon, I’m going to talk a little bit about C# on the iPhone with Monotouch. I’m Chris Hardy and you go follow me on twitter @ chrisntr.
  • I work for a company called Great Fridays and we’re mainly a web design agency working for people such as Ubisoft, Peter Gabriel and Emma Watson

  • I work for a company called Great Fridays and we’re mainly a web design agency working for people such as Ubisoft, Peter Gabriel and Emma Watson

  • I work for a company called Great Fridays and we’re mainly a web design agency working for people such as Ubisoft, Peter Gabriel and Emma Watson

  • I work for a company called Great Fridays and we’re mainly a web design agency working for people such as Ubisoft, Peter Gabriel and Emma Watson



  • This session I will be covering and hopefully answering some of your question on...
    What is Monotouch...
    How does it work...
    Why would you use it...
    and I’ll also show a demo or two on using MonoTouch
  • This session I will be covering and hopefully answering some of your question on...
    What is Monotouch...
    How does it work...
    Why would you use it...
    and I’ll also show a demo or two on using MonoTouch
  • This session I will be covering and hopefully answering some of your question on...
    What is Monotouch...
    How does it work...
    Why would you use it...
    and I’ll also show a demo or two on using MonoTouch
  • This session I will be covering and hopefully answering some of your question on...
    What is Monotouch...
    How does it work...
    Why would you use it...
    and I’ll also show a demo or two on using MonoTouch
  • This session I will be covering and hopefully answering some of your question on...
    What is Monotouch...
    How does it work...
    Why would you use it...
    and I’ll also show a demo or two on using MonoTouch
  • In the summer I thought I’d have a go at iPhone programming, it’s fun and it’s enjoyable and it also involves... </next slide>
  • using Objective C and Xcode... this lead me to learn objective-c... which was hard coming from a PHP/Web background. Constant errors and manually hacking at SOAP requests was not much fun... XCode on the other hand was really nice although there is no concept of a project folder...






  • So, what is MonoTouch? First of all we should ask a different question.




  • The CIL (Common Intermediate Language) / Assembley is sent to Mono at Runtime and executed directly in memory...
  • The CIL (Common Intermediate Language) / Assembley is sent to Mono at Runtime and executed directly in memory...

































  • C# on the iPhone with MonoTouch Glasgow

    1. 1. C# on the iPhone with MonoTouch Chris Hardy follow on Twitter - @chrisntr
    2. 2. http://greatfridays.com
    3. 3. iPhone apps built with MonoTouch
    4. 4. iPad apps built with MonoTouch
    5. 5. Covering...
    6. 6. Covering... • How MonoTouch works...
    7. 7. Covering... • How MonoTouch works... • Why would you use it?
    8. 8. Covering... • How MonoTouch works... • Why would you use it? • Section 3.3.1 ...
    9. 9. Covering... • How MonoTouch works... • Why would you use it? • Section 3.3.1 ... • Demos
    10. 10. Starting point....
    11. 11. Objective C and Xcode
    12. 12. Learn to read Objective-C
    13. 13. Learn to read Objective-C
    14. 14. Learn to read Objective-C
    15. 15. Learn to read Objective-C • All Apple documentation is in Obj-C
    16. 16. Learn to read Objective-C • All Apple documentation is in Obj-C • Most examples are in Obj-C
    17. 17. Learn to read Objective-C • All Apple documentation is in Obj-C • Most examples are in Obj-C • It’s not too hard to understand
    18. 18. Learn to read Objective-C • All Apple documentation is in Obj-C • Most examples are in Obj-C • It’s not too hard to understand • It might even be fun...
    19. 19. What is MonoTouch?
    20. 20. What is Mono?
    21. 21. What is Mono?
    22. 22. What is Mono?
    23. 23. What is Mono? The .Net Framework
    24. 24. What is Mono? The .Net Framework
    25. 25. Mono’s JIT Engine Memory Mono CIL
    26. 26. Apple No No... • Contractual Requirements • No interpreted code • No shared libraries • Kernel Limitations • iPhone OS 2.0+ disables JIT
    27. 27. Mono’s AOT Engine Native Code Mono AOT Mono Runtime CIL ARM
    28. 28. Monotouch Features • mtouch • MonoDevelop iPhone Add-In • CocoaTouch.NET • Full static AOT compiler • Support for all your existing code • Reflection • Generics • LINQ • Anonymous Methods • Lambda’s etc...
    29. 29. MonoTouch’s APIs
    30. 30. The Bindings • MonoTouch namespace • MonoTouch.Foo namespace • Maps to CocoaTouch’s Foo Framework • 1:1 Mapping of classes. • MonoTouch.UIKit.UILabel • CocoaTouch’s UIKit framework, UILabel class
    31. 31. Strong Types • Objective-C • Arrays are weakly typed: • NSArray return values. • MonoTouch has strong types • UIView[] Subviews { get; } • vs • NSArray *subviews; • Intellisense - explore the API...
    32. 32. Garbage Collection • Automatic: • Mono’s GC will collect objects on demand • Deterministic: • Use when you need control. • Every object in MonoTouch implements IDisposable using (var image = UIImage.FromFile(“foo.png”)){ surface.DrawImage(image, 20, 20); }
    33. 33. Linker
    34. 34. What about App Size? • 20 MB (compressed) limit on 3G/Edge downloads • .Net BCL and other libraries are huge • Mono Linker to the rescue!
    35. 35. Linking Assemblies
    36. 36. Linker Options • No Link • Link SDK Only • Full Link
    37. 37. Pipeline • Interface Builder GUI Designer • Exact same tool used by Xcode • Support for existing Xcode interfaces • MonoDevelop IDE
    38. 38. Integration • Tight integration between MD and IB • IB produces XIBs with MD parses • Automatic class generation in MD • Generates partial classes for all types, outlets and actions defined in Interface Builder
    39. 39. Outlets • Instance Variables • Can be strong or loosely typed • MD will strong type
    40. 40. Actions • Objects emit broadcast messages to receivers • You can do this C# • MonoDevelop takes care of the details for you • Creates partial methods for you extend
    41. 41. MonoTouch Events • Supports Objective-C pattern: webView.Delegate = new MyWebViewDelegate(); • C# style events as well: webView.PageLoaded += delegate { HideSpinningWheel(); }
    42. 42. Debugging • Console.WriteLine(“Debugging inside of MonoTouch”); • printf(“I made it to this line!n”)
    43. 43. Well...
    44. 44. Well...
    45. 45. Well... • MonoTouch 1.0 on 15th September 2009
    46. 46. Well... • MonoTouch 1.0 on 15th September 2009 • MonoTouch 1.1 on 2nd October 2009
    47. 47. Well... • MonoTouch 1.0 on 15th September 2009 • MonoTouch 1.1 on 2nd October 2009 • MonoTouch 1.2 (Beta) released on 28th October 2009... With Debugging support
    48. 48. Well... • MonoTouch 1.0 on 15th September 2009 • MonoTouch 1.1 on 2nd October 2009 • MonoTouch 1.2 (Beta) released on 28th October 2009... With Debugging support • Currently on MonoTouch 2.0.2
    49. 49. Debugger • MonoTouch debugger leverages Mono’s new Soft-Debugger • Supports the Simulator • Supports the Device... • even over WiFi
    50. 50. Debugger Features • Breakpoints • Catchpoints • Inspection • Watches • Immediate / Expression Evaluator • Call Stack • Stepping
    51. 51. Caveats • Debug binaries on devices are very large • Cannot debug Main or FinishedLaunching on device • Consumes more memory runtime • Performance hit
    52. 52. Getting started • Get iPhone SDK from Apple • Get Mono from Novell • Get MonoTouch (evaluation version is free) • Get MonoDevelop • Register with Apple iPhone Developer Program and purchase MonoTouch for putting apps on device and AppStore.
    53. 53. iPad
    54. 54. iPad • But you want to develop for the iPad...
    55. 55. iPad • But you want to develop for the iPad... • 24 Hours after the SDK was released...
    56. 56. iPad • But you want to develop for the iPad... • 24 Hours after the SDK was released... • MonoTouch support for iPad
    57. 57. iPad • But you want to develop for the iPad... • 24 Hours after the SDK was released... • MonoTouch support for iPad • Fully supported with MonoTouch 2.0
    58. 58. Apple’s new TOS • 3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
    59. 59. Professional iPhone Programming with MonoTouch and .NET/ C# Wallace B. McClure Rory Blyth Martin Bowling Craig Dunn and me... Chris Hardy Out in Summer
    60. 60. Demo time...
    61. 61. Q +A twitter.com/chrisntr chrisntr@gmail.com 10% off MonoTouch use DDDSCOT on MonoTouch.net
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×