SlideShare a Scribd company logo
1 of 19
Download to read offline
MonoTouch iPhone
Development
Adam Hill
@adamhill
Overview
Who, What, Why and How
API’s
Obj-C <-> C# Conventions
Who?
Miguel de Icaza (not the only one, but got the ball rolling)
Original developer for Gnome
Was impressed with .NET, saw that MS really wanted
to make developers happy
Started working on Mono, released in 2005
Now working @ Novell
Released MonoTouch in Sept 2009
What?
Mono
Cross-platform re-implementation of .NET
5 years old
Monotouch is a project from the Mono developers
Includes very mature IDE - MonoDevelop
Intellisense
Integrated into XCode toolset
Motivated and helpful community
Why?
Current developer expertise
Codebase
Objective-C is a zone of pain
25 year old language
Do we really still need to worry about memory
manangement.... REALLY? (yes I know about Autorelease Pools)
But you still have to understand it because all the good
examples are in it
How?
.NET is based on IL and gets JIT’ed as necessary
But there are Apple restrictions
No JIT’ed apps
No shared libraries
But eventually everything gets turned into machine
code, right????
So what can we do to fix this?
How?
AOT - Ahead of Time Compiler
Compiles directly to machine code
But one big .app is still very large....
The Mono linker strips out all unused code
Minimum binary is still 5-7M
MonoTouch API’s
mscorlib
System
System.Core (LINQ)
System.Data
Mono.Data.Sqllite
Mono.Dialog (UITblV)
System.ServiceModel
WCF
System.Json
System.Web.Services
System.XML
System.XML.Linq
.NET API’s MonoTouch
AddressBook/
AddressBook.UI
AudioToolbox/
AVFoundation
CoreAnimation
CoreGraphics
CoreLocation
GameKit
MediaPlayer
MessageUI
StoreKit
SystemConfiguration
UIKit
Third Party
OpenTK
OpenGL
OpenAL
Sqlite-CS
XnaTouch
CocoaNet
Service Stack
(JSON, XML SOAP)
Vici.CoolStorage
(Object store)
How it is Bound
Monotouch Namespace
Monotouch.Foo
Maps to CocoaTouch’s Foo Framework
1:1 Mapping of classes
Monotouch.UIKit.UILabel
CocoaTouch’s UIKit framework, UILabel class
Strongly Typed
Obj-C
Arrays are weakly typed
NSArray returns values
MonoTouch has strong types
UIView[] Subviews {get}
vs.
NSArray *subviews
MonoDevelop has nice Intellisense - explore the API
Garbage Collection
Automatic
Mono’s GC will collect objects on demand
Deterministic
Use it when you need control
Every object in MonoTouch implements IDisposable
using (var image = UIImage.FromFile(“foo.png”))
{
surface.DrawImage(image, 20, 20);
}
Pipeline
Interface Builder GUI Designer
Exact same tool in XCode
Supports current XCode interfaces
MonoDevelop IDE
Integration
Tight integration between MonoDevelop and
InterfaceBuilder
IB makes XIB’s / MD parses them
Auto-generates classes in MD
Generates partial classes for types, outlets and actions
set up in Interface Builder
Events
Supports Objective-C pattern:
webView.Delegate = new MyWebViewDelegate();
C# style too:
webView.PageLoaded += delegate {
HideSpinningWheel();
}
Debugger / Performance
MonoTouch supports Mono’s debug framework and
MonoDevelop
Supports the simulator and the device (even over
WiFi)
(New) Supports profiling via Shark and Instruments
Demos
XNATouch
Monotouch OGL Samples
Roadmap
Currently support SDK 3.1.3
Beta MonoTouch builds iPad apps for simulator (< 24
hour turnaround from when the SDK was released)
Will track future iPhone/iPad SDK releases
MonoDroid preview Q3 2010
Silverlight/Moonlight prototype Q3 2010
Get Started
iPhone SDK
Monotouch from Novell (eval is free, simulator only)
$399.00 Dev
$999 Enterprise
MonoDevelop from the community
Join iPhone Dev Program ($99) to deploy to a device
and sell in the AppStore
Thanks
To the Mono team at Novell for such an awesome tool
@chrisntr for letting me reuse his slides
adam.hill@gmail.com

More Related Content

Similar to Monotouch iPhone Development – IGDA Orlando - 2007

iOS Development, with Swift and XCode
iOS Development, with Swift and XCodeiOS Development, with Swift and XCode
iOS Development, with Swift and XCodeWan Leung Wong
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyNick Landry
 
Presentation [autosaved] unacademy
Presentation [autosaved] unacademyPresentation [autosaved] unacademy
Presentation [autosaved] unacademyRohitSingh1405
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayLiz Sims
 
Introduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for AndroidIntroduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for AndroidChris Hardy
 
ISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art, LLC
 
Learning C# iPad Programming
Learning C# iPad ProgrammingLearning C# iPad Programming
Learning C# iPad ProgrammingRich Helton
 
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsVicente Gerardo Guzman Lucio
 
Visual Studio 2017 Launch Event
Visual Studio 2017 Launch EventVisual Studio 2017 Launch Event
Visual Studio 2017 Launch EventJames Montemagno
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot netEkam Baram
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseJen Looper
 
iPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicsiPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicskenshin03
 
01. Introduction to Programming
01. Introduction to Programming01. Introduction to Programming
01. Introduction to ProgrammingIntro C# Book
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Bala Subra
 
A Glimpse On MeeGo
A Glimpse On MeeGoA Glimpse On MeeGo
A Glimpse On MeeGoAmanda Lam
 
echo-o & iPhone App Dev - BarCamp Saigon 1
echo-o & iPhone App Dev - BarCamp Saigon 1echo-o & iPhone App Dev - BarCamp Saigon 1
echo-o & iPhone App Dev - BarCamp Saigon 1huyzing
 
Introduction to Visual Basic 6.0 Fundamentals
Introduction to Visual Basic 6.0 FundamentalsIntroduction to Visual Basic 6.0 Fundamentals
Introduction to Visual Basic 6.0 FundamentalsSanay Kumar
 
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ....NET Conf UY
 

Similar to Monotouch iPhone Development – IGDA Orlando - 2007 (20)

Intro to MonoTouch
Intro to MonoTouchIntro to MonoTouch
Intro to MonoTouch
 
iOS Development, with Swift and XCode
iOS Development, with Swift and XCodeiOS Development, with Swift and XCode
iOS Development, with Swift and XCode
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
 
Presentation [autosaved] unacademy
Presentation [autosaved] unacademyPresentation [autosaved] unacademy
Presentation [autosaved] unacademy
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage Essay
 
Introduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for AndroidIntroduction to MonoTouch and Monodroid/Mono for Android
Introduction to MonoTouch and Monodroid/Mono for Android
 
Hello world ios v1
Hello world ios v1Hello world ios v1
Hello world ios v1
 
ISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin Multiplatform
 
Learning C# iPad Programming
Learning C# iPad ProgrammingLearning C# iPad Programming
Learning C# iPad Programming
 
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
 
Visual Studio 2017 Launch Event
Visual Studio 2017 Launch EventVisual Studio 2017 Launch Event
Visual Studio 2017 Launch Event
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot net
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and Firebase
 
iPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicsiPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basics
 
01. Introduction to Programming
01. Introduction to Programming01. Introduction to Programming
01. Introduction to Programming
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
 
A Glimpse On MeeGo
A Glimpse On MeeGoA Glimpse On MeeGo
A Glimpse On MeeGo
 
echo-o & iPhone App Dev - BarCamp Saigon 1
echo-o & iPhone App Dev - BarCamp Saigon 1echo-o & iPhone App Dev - BarCamp Saigon 1
echo-o & iPhone App Dev - BarCamp Saigon 1
 
Introduction to Visual Basic 6.0 Fundamentals
Introduction to Visual Basic 6.0 FundamentalsIntroduction to Visual Basic 6.0 Fundamentals
Introduction to Visual Basic 6.0 Fundamentals
 
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...
Tips & tricks for sharing C# code on iOS, Android and Windows Phone by Jaime ...
 

More from Adam Hill

PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfPapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfAdam Hill
 
The Rendering Equation
The Rendering EquationThe Rendering Equation
The Rendering EquationAdam Hill
 
Clojure Intro - Dallas Functional
Clojure Intro - Dallas FunctionalClojure Intro - Dallas Functional
Clojure Intro - Dallas FunctionalAdam Hill
 
Dallas Functional - Homoiconcity
Dallas Functional - HomoiconcityDallas Functional - Homoiconcity
Dallas Functional - HomoiconcityAdam Hill
 
Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Adam Hill
 
Visual studio + Xamarin == Love
Visual studio + Xamarin == LoveVisual studio + Xamarin == Love
Visual studio + Xamarin == LoveAdam Hill
 
Library, Library Lets Use THAT Library – DFW Mobile
Library, Library Lets Use THAT Library  – DFW MobileLibrary, Library Lets Use THAT Library  – DFW Mobile
Library, Library Lets Use THAT Library – DFW MobileAdam Hill
 
10 Minute UX Talk Designing Data Visualization
10 Minute UX Talk   Designing Data Visualization10 Minute UX Talk   Designing Data Visualization
10 Minute UX Talk Designing Data VisualizationAdam Hill
 
Functional Testing
Functional TestingFunctional Testing
Functional TestingAdam Hill
 
Are You Live Coding at Me?!!
Are You Live Coding at Me?!!Are You Live Coding at Me?!!
Are You Live Coding at Me?!!Adam Hill
 
Looking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesLooking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesAdam Hill
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The GamesAdam Hill
 
Whats New in Visual Studio 2015
Whats New in Visual Studio 2015Whats New in Visual Studio 2015
Whats New in Visual Studio 2015Adam Hill
 
Visual studio + Xamarin equals love
Visual studio + Xamarin equals loveVisual studio + Xamarin equals love
Visual studio + Xamarin equals loveAdam Hill
 
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018Adam Hill
 
Clojure intro Dallas Functional
Clojure intro   Dallas FunctionalClojure intro   Dallas Functional
Clojure intro Dallas FunctionalAdam Hill
 

More from Adam Hill (16)

PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfPapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
 
The Rendering Equation
The Rendering EquationThe Rendering Equation
The Rendering Equation
 
Clojure Intro - Dallas Functional
Clojure Intro - Dallas FunctionalClojure Intro - Dallas Functional
Clojure Intro - Dallas Functional
 
Dallas Functional - Homoiconcity
Dallas Functional - HomoiconcityDallas Functional - Homoiconcity
Dallas Functional - Homoiconcity
 
Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !Micro Talk - Test Your S#!? !
Micro Talk - Test Your S#!? !
 
Visual studio + Xamarin == Love
Visual studio + Xamarin == LoveVisual studio + Xamarin == Love
Visual studio + Xamarin == Love
 
Library, Library Lets Use THAT Library – DFW Mobile
Library, Library Lets Use THAT Library  – DFW MobileLibrary, Library Lets Use THAT Library  – DFW Mobile
Library, Library Lets Use THAT Library – DFW Mobile
 
10 Minute UX Talk Designing Data Visualization
10 Minute UX Talk   Designing Data Visualization10 Minute UX Talk   Designing Data Visualization
10 Minute UX Talk Designing Data Visualization
 
Functional Testing
Functional TestingFunctional Testing
Functional Testing
 
Are You Live Coding at Me?!!
Are You Live Coding at Me?!!Are You Live Coding at Me?!!
Are You Live Coding at Me?!!
 
Looking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesLooking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong Places
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The Games
 
Whats New in Visual Studio 2015
Whats New in Visual Studio 2015Whats New in Visual Studio 2015
Whats New in Visual Studio 2015
 
Visual studio + Xamarin equals love
Visual studio + Xamarin equals loveVisual studio + Xamarin equals love
Visual studio + Xamarin equals love
 
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018
Oops Youve Got A Mobile Enterprise App – DevFestWeekend 2018
 
Clojure intro Dallas Functional
Clojure intro   Dallas FunctionalClojure intro   Dallas Functional
Clojure intro Dallas Functional
 

Recently uploaded

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
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
 
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
 

Recently uploaded (20)

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
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...
 
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
 

Monotouch iPhone Development – IGDA Orlando - 2007

  • 2. Overview Who, What, Why and How API’s Obj-C <-> C# Conventions
  • 3. Who? Miguel de Icaza (not the only one, but got the ball rolling) Original developer for Gnome Was impressed with .NET, saw that MS really wanted to make developers happy Started working on Mono, released in 2005 Now working @ Novell Released MonoTouch in Sept 2009
  • 4. What? Mono Cross-platform re-implementation of .NET 5 years old Monotouch is a project from the Mono developers Includes very mature IDE - MonoDevelop Intellisense Integrated into XCode toolset Motivated and helpful community
  • 5. Why? Current developer expertise Codebase Objective-C is a zone of pain 25 year old language Do we really still need to worry about memory manangement.... REALLY? (yes I know about Autorelease Pools) But you still have to understand it because all the good examples are in it
  • 6. How? .NET is based on IL and gets JIT’ed as necessary But there are Apple restrictions No JIT’ed apps No shared libraries But eventually everything gets turned into machine code, right???? So what can we do to fix this?
  • 7. How? AOT - Ahead of Time Compiler Compiles directly to machine code But one big .app is still very large.... The Mono linker strips out all unused code Minimum binary is still 5-7M
  • 8. MonoTouch API’s mscorlib System System.Core (LINQ) System.Data Mono.Data.Sqllite Mono.Dialog (UITblV) System.ServiceModel WCF System.Json System.Web.Services System.XML System.XML.Linq .NET API’s MonoTouch AddressBook/ AddressBook.UI AudioToolbox/ AVFoundation CoreAnimation CoreGraphics CoreLocation GameKit MediaPlayer MessageUI StoreKit SystemConfiguration UIKit Third Party OpenTK OpenGL OpenAL Sqlite-CS XnaTouch CocoaNet Service Stack (JSON, XML SOAP) Vici.CoolStorage (Object store)
  • 9. How it is Bound Monotouch Namespace Monotouch.Foo Maps to CocoaTouch’s Foo Framework 1:1 Mapping of classes Monotouch.UIKit.UILabel CocoaTouch’s UIKit framework, UILabel class
  • 10. Strongly Typed Obj-C Arrays are weakly typed NSArray returns values MonoTouch has strong types UIView[] Subviews {get} vs. NSArray *subviews MonoDevelop has nice Intellisense - explore the API
  • 11. Garbage Collection Automatic Mono’s GC will collect objects on demand Deterministic Use it when you need control Every object in MonoTouch implements IDisposable using (var image = UIImage.FromFile(“foo.png”)) { surface.DrawImage(image, 20, 20); }
  • 12. Pipeline Interface Builder GUI Designer Exact same tool in XCode Supports current XCode interfaces MonoDevelop IDE
  • 13. Integration Tight integration between MonoDevelop and InterfaceBuilder IB makes XIB’s / MD parses them Auto-generates classes in MD Generates partial classes for types, outlets and actions set up in Interface Builder
  • 14. Events Supports Objective-C pattern: webView.Delegate = new MyWebViewDelegate(); C# style too: webView.PageLoaded += delegate { HideSpinningWheel(); }
  • 15. Debugger / Performance MonoTouch supports Mono’s debug framework and MonoDevelop Supports the simulator and the device (even over WiFi) (New) Supports profiling via Shark and Instruments
  • 17. Roadmap Currently support SDK 3.1.3 Beta MonoTouch builds iPad apps for simulator (< 24 hour turnaround from when the SDK was released) Will track future iPhone/iPad SDK releases MonoDroid preview Q3 2010 Silverlight/Moonlight prototype Q3 2010
  • 18. Get Started iPhone SDK Monotouch from Novell (eval is free, simulator only) $399.00 Dev $999 Enterprise MonoDevelop from the community Join iPhone Dev Program ($99) to deploy to a device and sell in the AppStore
  • 19. Thanks To the Mono team at Novell for such an awesome tool @chrisntr for letting me reuse his slides adam.hill@gmail.com