italian alt.net conference monotouch session

Post on 12-Jun-2015

1.724 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Thanks to Geoff Norton and Miguel De Icaza for the basis of most of the slides. My MonoTouch session from the 5th UGIAlt.Net Conference in Milan on 23rd January 2010.

TRANSCRIPT

C# on the iPhonewith MonoTouch

Chris Hardy@chrisntr

http://greatfridays.com

Covering...

• What is MonoTouch?

• How does it work?

• Why would you use it?

• Demos

Starting point....

Objective C and Xcode

Learn to read Objective-C

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...

What is MonoTouch?

What is Mono?

What is Mono?

Open Source .Net Implementation of the

Microsoft .Net Framework

Mono’s JIT Engine

CIL

Mono

Memory

Apple No No...

• Contractual Requirements

• No interpreted code

• No shared libraries

• Kernel Limitations

• iPhone OS 2.0+ disables JIT

Mono’s AOT Engine

CIL

Mono

AOTMono Runtime

ARM

Native Code

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...

MonoTouch’s APIs

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

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...

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);

}

Linker

What about App Size?

• 10 MB (compressed) limit on 3G/Edge downloads

• .Net BCL and other libraries are huge

• Mono Linker to the rescue!

Linking Assemblies

Linker Options

• No Link

• Link SDK Only

• Full Link

Pipeline

• Interface Builder GUI Designer

• Exact same tool used by Xcode

• Support for existing Xcode interfaces

• MonoDevelop IDE

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

Outlets

• Instance Variables

• Can be strong or loosely typed

• MD will strong type

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

MonoTouch Events

• Supports Objective-C pattern:

webView.Delegate = new MyWebViewDelegate();

• C# style events as well:

webView.PageLoaded += delegate {HideSpinningWheel();

}

Debugging

• Console.WriteLine(“Debugging inside of MonoTouch”);

• printf(“I made it to this line!\n”)

Well...

• MonoTouch released around 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 1.4.5

Debugger

• MonoTouch debugger leverages Mono’s new Soft-Debugger

• Supports the Simulator

• Supports the Device...

• even over WiFi

Debugger Features• Breakpoints

• Catchpoints

• Inspection

• Watches

• Immediate / Expression Evaluator

• Call Stack

• Stepping

Caveats

• Debug binaries on devices are very large

• Cannot debug Main or FinishedLaunching on device

• Consumes more memory runtime

• Performance hit

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.

Demo time...

top related