SlideShare a Scribd company logo
1 of 63
Getting Started with
    MonoTouch
   Building iOS Applications in C#




             May 31, 2012

          Copyright 2012 © Xamarin Inc. All rights reserved
Agenda
Introduction to MonoTouch

                       Mike Bluestein
                       Technical Writer
                       Xamarin Documentation Team
                       mike.bluestein@xamarin.com
                       @mikebluestein




                                                        Xamarin
    Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:




                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch




                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports




                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports
           How it works




                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports
           How it works
        Additional libraries




                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports
           How it works
        Additional libraries
         Tooling support



                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports
           How it works
        Additional libraries
         Tooling support
       Memory management


                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
Introduction

This session will cover the following:


      Overview of MonoTouch
         What it supports
           How it works
        Additional libraries
         Tooling support
       Memory management
              Demos

                                                             Xamarin
         Copyright 2012 © Xamarin Inc. All rights reserved
What is MonoTouch?
What is MonoTouch?
• Platform for creating native iOS
  applications using C#
What is MonoTouch?
• Platform for creating native iOS
  applications using C#
• Supports App Store and Enterprise
  Deployment
What is MonoTouch?
• Platform for creating native iOS
  applications using C#
• Supports App Store and Enterprise
  Deployment
• Ahead of Time Compiler
What is MonoTouch?
• Platform for creating native iOS
  applications using C#
• Supports App Store and Enterprise
  Deployment
• Ahead of Time Compiler
• Bindings to Objective-C classes
What is MonoTouch?
What is MonoTouch?

• Garbage Collection
What is MonoTouch?

• Garbage Collection
• MonoDevelop IDE
What is MonoTouch?

• Garbage Collection
• MonoDevelop IDE
• Debugger
What is MonoTouch?

• Garbage Collection
• MonoDevelop IDE
• Debugger
• Profiler
What is MonoTouch?

• Garbage Collection
• MonoDevelop IDE
• Debugger
• Profiler
• Unit Testing
App Store
• Thousands of MonoTouch apps published
 • http://xamarin.com/apps




• Apple has featured MonoTouch apps
What do I need?
What do I need?

• Mac
What do I need?

• Mac
• iOS Developer account (iOS SDK)
What do I need?

• Mac
• iOS Developer account (iOS SDK)
 • Xcode
What do I need?

• Mac
• iOS Developer account (iOS SDK)
 • Xcode
• Mono, MonoDevelop, MonoTouch
What is supported?

• Native APIs
 • Anything you can
    do in Objective-C
• Additionally adds
  .NET BCL
What is supported?
What is supported?
• LINQ
What is supported?
• LINQ
• Generics
What is supported?
• LINQ
• Generics
• Strong typing
What is supported?
• LINQ
• Generics
• Strong typing
• ADO.NET wrappers over SQLite
What is supported?
• LINQ
• Generics
• Strong typing
• ADO.NET wrappers over SQLite
• etc...
What is supported?
• LINQ
• Generics
• Strong typing
• ADO.NET wrappers over SQLite
• etc...
• Can port most non-UI code with little or
  sometimes no code change
Cross-Platform
Xamarin.Mobile API
MonoTouch.Dialog
How does it work?
How does it work?
• MonoTouch uses Ahead-Of-Time
  compilation to produce a single statically
  compiled ARM binary
How does it work?
• MonoTouch uses Ahead-Of-Time
  compilation to produce a single statically
  compiled ARM binary
• AOT compilation pre-generates all the
  native code that the JIT would normally
  generate from IL
How does it work?
• MonoTouch uses Ahead-Of-Time
  compilation to produce a single statically
  compiled ARM binary
• AOT compilation pre-generates all the
  native code that the JIT would normally
  generate from IL
• Links this together with the JIT-less runtime
  into a single native binary that can be
  signed
How does it work?
How does it work?


• Apple does not allow JIT
How does it work?


• Apple does not allow JIT
• IL is stripped from the managed
  assemblies, leaving only metadata
JIT-less Environment 
JIT-less Environment 

• Apple restricts this by policy and in kernel
JIT-less Environment 

• Apple restricts this by policy and in kernel
• Eliminates some .NET areas
JIT-less Environment 

• Apple restricts this by policy and in kernel
• Eliminates some .NET areas
 • CodeDom, Reflection-Emit (although
    reflection works),Virtual generic
    methods, DLR
Memory Management
Memory Management
• .NET objects are garbage collected
Memory Management
• .NET objects are garbage collected
• Objective-C (on iOS) however uses retain
  counts
Memory Management
• .NET objects are garbage collected
• Objective-C (on iOS) however uses retain
  counts
• MonoTouch abstracts this away
Memory Management
• .NET objects are garbage collected
• Objective-C (on iOS) however uses retain
  counts
• MonoTouch abstracts this away
 • Creates autorelease pool for main thread
    and thread pool
Memory Management
• .NET objects are garbage collected
• Objective-C (on iOS) however uses retain
  counts
• MonoTouch abstracts this away
 • Creates autorelease pool for main thread
    and thread pool
 • Create autorelease pool manually if using
    Objective-C objects on your own threads
Xcode Integration
Xcode Integration

• Interface Builder from Apple previously was
  a stand alone application
Xcode Integration

• Interface Builder from Apple previously was
  a stand alone application
• Apple has now merged it into Xcode
Xcode Integration

• Interface Builder from Apple previously was
  a stand alone application
• Apple has now merged it into Xcode
• MonoTouch supports Xcode’s integrated
  Interface Builder
Demos
Books
Professional iPhone Programming with MonoTouch and .NET/C#
(7/13/2010)
by Wallace B. McClure, Craig Dunn, Chris Hardy, Martin Bowling,
Rory Blyth

Developing C# Apps for iPhone and iPad using MonoTouch: iOS Apps
Development for .NET Developers: 1st Edition (6/9/2011)
by Bryan Costanich


Learning MonoTouch: A Hands-On Guide to Building iOS Applications
with C# and .NET (8/8/2011)
by Michael Bluestein



iOS Development using MonoTouch Cookbook (12/14/2011)
by Dimitris Tavlikos
docs.xamarin.com/ios
Xamarin
    Seminar
   Please give us your feedback
  http://bit.ly/xamfeedback


      Follow us on Twitter
        @XamarinHQ



        Copyright 2012 © Xamarin Inc. All rights reserved

More Related Content

Similar to Getting Started Using MonoTouch

C# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowC# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowChris Hardy
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionChris Hardy
 
C# On The iPhone with MonoTouch at DDD8
C# On The iPhone with MonoTouch at DDD8C# On The iPhone with MonoTouch at DDD8
C# On The iPhone with MonoTouch at DDD8Chris Hardy
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionXamarin
 
Cross-platform Mobile Development
Cross-platform Mobile DevelopmentCross-platform Mobile Development
Cross-platform Mobile DevelopmentXamarin
 
Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouchJonas Follesø
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarinLuca Zulian
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to XamarinBrian Anderson
 
EastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchEastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchmobiweave
 
Introducing mono & xamarin
Introducing mono & xamarinIntroducing mono & xamarin
Introducing mono & xamarinTechizzaa
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfShaiAlmog1
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application developmentKunjan Thakkar
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platformsguestfa9375
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platformssmancke
 
MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014myappconverter
 
A lap around monotouch
A lap around monotouchA lap around monotouch
A lap around monotouchmecurioJ
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformAndrew Ferrier
 
Intro to tech stacks bonny
Intro to tech stacks bonnyIntro to tech stacks bonny
Intro to tech stacks bonnyLama K Banna
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008smancke
 

Similar to Getting Started Using MonoTouch (20)

C# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch GlasgowC# on the iPhone with MonoTouch Glasgow
C# on the iPhone with MonoTouch Glasgow
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch Session
 
C# On The iPhone with MonoTouch at DDD8
C# On The iPhone with MonoTouch at DDD8C# On The iPhone with MonoTouch at DDD8
C# On The iPhone with MonoTouch at DDD8
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 Introduction
 
Cross-platform Mobile Development
Cross-platform Mobile DevelopmentCross-platform Mobile Development
Cross-platform Mobile Development
 
Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouch
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarin
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
EastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchEastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouch
 
Introducing mono & xamarin
Introducing mono & xamarinIntroducing mono & xamarin
Introducing mono & xamarin
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdf
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014MyAppConverter DroidconUK 2014
MyAppConverter DroidconUK 2014
 
A lap around monotouch
A lap around monotouchA lap around monotouch
A lap around monotouch
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
Intro to tech stacks bonny
Intro to tech stacks bonnyIntro to tech stacks bonny
Intro to tech stacks bonny
 
Xamarin v.Now
Xamarin v.NowXamarin v.Now
Xamarin v.Now
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008
 

More from Xamarin

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinXamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinXamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushXamarin
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureXamarin
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksXamarin
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinXamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningXamarin
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UIXamarin
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesXamarin
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilityXamarin
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeXamarin
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Xamarin
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsXamarin
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureXamarin
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Xamarin
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureXamarin
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Xamarin
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioXamarin
 

More from Xamarin (20)

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft Azure
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin Workbooks
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine Learning
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UI
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and Resources
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and Profitability
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile Practice
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.Forms
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft Azure
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual Studio
 

Recently uploaded

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

Getting Started Using MonoTouch

  • 1. Getting Started with MonoTouch Building iOS Applications in C# May 31, 2012 Copyright 2012 © Xamarin Inc. All rights reserved
  • 2. Agenda Introduction to MonoTouch Mike Bluestein Technical Writer Xamarin Documentation Team mike.bluestein@xamarin.com @mikebluestein Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 3. Introduction This session will cover the following: Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 4. Introduction This session will cover the following: Overview of MonoTouch Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 5. Introduction This session will cover the following: Overview of MonoTouch What it supports Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 6. Introduction This session will cover the following: Overview of MonoTouch What it supports How it works Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 7. Introduction This session will cover the following: Overview of MonoTouch What it supports How it works Additional libraries Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 8. Introduction This session will cover the following: Overview of MonoTouch What it supports How it works Additional libraries Tooling support Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 9. Introduction This session will cover the following: Overview of MonoTouch What it supports How it works Additional libraries Tooling support Memory management Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 10. Introduction This session will cover the following: Overview of MonoTouch What it supports How it works Additional libraries Tooling support Memory management Demos Xamarin Copyright 2012 © Xamarin Inc. All rights reserved
  • 12. What is MonoTouch? • Platform for creating native iOS applications using C#
  • 13. What is MonoTouch? • Platform for creating native iOS applications using C# • Supports App Store and Enterprise Deployment
  • 14. What is MonoTouch? • Platform for creating native iOS applications using C# • Supports App Store and Enterprise Deployment • Ahead of Time Compiler
  • 15. What is MonoTouch? • Platform for creating native iOS applications using C# • Supports App Store and Enterprise Deployment • Ahead of Time Compiler • Bindings to Objective-C classes
  • 17. What is MonoTouch? • Garbage Collection
  • 18. What is MonoTouch? • Garbage Collection • MonoDevelop IDE
  • 19. What is MonoTouch? • Garbage Collection • MonoDevelop IDE • Debugger
  • 20. What is MonoTouch? • Garbage Collection • MonoDevelop IDE • Debugger • Profiler
  • 21. What is MonoTouch? • Garbage Collection • MonoDevelop IDE • Debugger • Profiler • Unit Testing
  • 22. App Store • Thousands of MonoTouch apps published • http://xamarin.com/apps • Apple has featured MonoTouch apps
  • 23. What do I need?
  • 24. What do I need? • Mac
  • 25. What do I need? • Mac • iOS Developer account (iOS SDK)
  • 26. What do I need? • Mac • iOS Developer account (iOS SDK) • Xcode
  • 27. What do I need? • Mac • iOS Developer account (iOS SDK) • Xcode • Mono, MonoDevelop, MonoTouch
  • 28. What is supported? • Native APIs • Anything you can do in Objective-C • Additionally adds .NET BCL
  • 31. What is supported? • LINQ • Generics
  • 32. What is supported? • LINQ • Generics • Strong typing
  • 33. What is supported? • LINQ • Generics • Strong typing • ADO.NET wrappers over SQLite
  • 34. What is supported? • LINQ • Generics • Strong typing • ADO.NET wrappers over SQLite • etc...
  • 35. What is supported? • LINQ • Generics • Strong typing • ADO.NET wrappers over SQLite • etc... • Can port most non-UI code with little or sometimes no code change
  • 39. How does it work?
  • 40. How does it work? • MonoTouch uses Ahead-Of-Time compilation to produce a single statically compiled ARM binary
  • 41. How does it work? • MonoTouch uses Ahead-Of-Time compilation to produce a single statically compiled ARM binary • AOT compilation pre-generates all the native code that the JIT would normally generate from IL
  • 42. How does it work? • MonoTouch uses Ahead-Of-Time compilation to produce a single statically compiled ARM binary • AOT compilation pre-generates all the native code that the JIT would normally generate from IL • Links this together with the JIT-less runtime into a single native binary that can be signed
  • 43. How does it work?
  • 44. How does it work? • Apple does not allow JIT
  • 45. How does it work? • Apple does not allow JIT • IL is stripped from the managed assemblies, leaving only metadata
  • 47. JIT-less Environment  • Apple restricts this by policy and in kernel
  • 48. JIT-less Environment  • Apple restricts this by policy and in kernel • Eliminates some .NET areas
  • 49. JIT-less Environment  • Apple restricts this by policy and in kernel • Eliminates some .NET areas • CodeDom, Reflection-Emit (although reflection works),Virtual generic methods, DLR
  • 51. Memory Management • .NET objects are garbage collected
  • 52. Memory Management • .NET objects are garbage collected • Objective-C (on iOS) however uses retain counts
  • 53. Memory Management • .NET objects are garbage collected • Objective-C (on iOS) however uses retain counts • MonoTouch abstracts this away
  • 54. Memory Management • .NET objects are garbage collected • Objective-C (on iOS) however uses retain counts • MonoTouch abstracts this away • Creates autorelease pool for main thread and thread pool
  • 55. Memory Management • .NET objects are garbage collected • Objective-C (on iOS) however uses retain counts • MonoTouch abstracts this away • Creates autorelease pool for main thread and thread pool • Create autorelease pool manually if using Objective-C objects on your own threads
  • 57. Xcode Integration • Interface Builder from Apple previously was a stand alone application
  • 58. Xcode Integration • Interface Builder from Apple previously was a stand alone application • Apple has now merged it into Xcode
  • 59. Xcode Integration • Interface Builder from Apple previously was a stand alone application • Apple has now merged it into Xcode • MonoTouch supports Xcode’s integrated Interface Builder
  • 60. Demos
  • 61. Books Professional iPhone Programming with MonoTouch and .NET/C# (7/13/2010) by Wallace B. McClure, Craig Dunn, Chris Hardy, Martin Bowling, Rory Blyth Developing C# Apps for iPhone and iPad using MonoTouch: iOS Apps Development for .NET Developers: 1st Edition (6/9/2011) by Bryan Costanich Learning MonoTouch: A Hands-On Guide to Building iOS Applications with C# and .NET (8/8/2011) by Michael Bluestein iOS Development using MonoTouch Cookbook (12/14/2011) by Dimitris Tavlikos
  • 63. Xamarin Seminar Please give us your feedback http://bit.ly/xamfeedback Follow us on Twitter @XamarinHQ Copyright 2012 © Xamarin Inc. All rights reserved

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n