+ All Categories
Home > Technology > iPhone for .NET Developers

iPhone for .NET Developers

Date post: 12-Jul-2015
Category:
Upload: ben-scheirman
View: 373 times
Download: 1 times
Share this document with a friend
Popular Tags:
72
iPhone for .NET Developers Ben Scheirman Director of Development - ChaiONE @subdigital Tuesday, September 28, 2010
Transcript
Page 1: iPhone for .NET Developers

iPhone for .NET DevelopersBen Scheirman

Director of Development - ChaiONE

@subdigital

Tuesday, September 28, 2010

Page 2: iPhone for .NET Developers

What you need

A Mac

Xcode

iPhone SDK (limited to Simulator)

iPhone Developer Program ($99 /year)

Tuesday, September 28, 2010

Page 3: iPhone for .NET Developers

Objective-C

Based on C

Object Oriented

Dynamic

A little weird

Powerful

Tuesday, September 28, 2010

Page 4: iPhone for .NET Developers

Objective-C Primer

Calling methods

Tuesday, September 28, 2010

Page 5: iPhone for .NET Developers

Objective-C Primer

Calling methods

[someObject someMethod];

Tuesday, September 28, 2010

Page 6: iPhone for .NET Developers

Objective-C Primer

Calling methods

[someObject someMethod];

[someObject someMethodWithInput:5];

Tuesday, September 28, 2010

Page 7: iPhone for .NET Developers

Objective-C Primer

Calling methods

[someObject someMethod];

[someObject someMethodWithInput:5];

[dictionary setObject:obj forKey:key];

Tuesday, September 28, 2010

Page 8: iPhone for .NET Developers

Objective-C Primer

Nesting method calls

Tuesday, September 28, 2010

Page 9: iPhone for .NET Developers

Objective-C Primer

Nesting method calls

[NSString stringWithFormat: [prefs format]];

Tuesday, September 28, 2010

Page 10: iPhone for .NET Developers

Objective-C Primer

Instantiating classes

Tuesday, September 28, 2010

Page 11: iPhone for .NET Developers

Objective-C Primer

Instantiating classes

UIView *view = [[UIView alloc] init];

Tuesday, September 28, 2010

Page 12: iPhone for .NET Developers

Objective-C Primer

Instantiating classes

UIView *view = [[UIView alloc] init];

NSDate *date = [NSDate date];

Tuesday, September 28, 2010

Page 13: iPhone for .NET Developers

Objective-C Primer

Defining Classes

Tuesday, September 28, 2010

Page 14: iPhone for .NET Developers

Objective-C Primer

Defining Classes

//Person.h@interface Person { //instance variables}

//properties & methods

@end

Tuesday, September 28, 2010

Page 15: iPhone for .NET Developers

Objective-C Primer

Defining Classes

Tuesday, September 28, 2010

Page 16: iPhone for .NET Developers

Objective-C Primer

Defining Classes

//Person.m#import "Person.h"

@implementation Person

//implement properties & methods

@end

Tuesday, September 28, 2010

Page 17: iPhone for .NET Developers

Objective-C Primer

Defining Methods

Tuesday, September 28, 2010

Page 18: iPhone for .NET Developers

Objective-C Primer

Defining Methods

-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;

Tuesday, September 28, 2010

Page 19: iPhone for .NET Developers

Objective-C Primer

Defining Methods

-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;

Method name (selector)

Tuesday, September 28, 2010

Page 20: iPhone for .NET Developers

Objective-C Primer

Defining Methods

-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;

Return Type

Method name (selector)

Tuesday, September 28, 2010

Page 21: iPhone for .NET Developers

Objective-C Primer

Defining Methods

-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;

Return Type

Instance method

Method name (selector)

Tuesday, September 28, 2010

Page 22: iPhone for .NET Developers

Objective-C Primer

Defining Methods

-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;

Return Type

Instance method

Parameters

Method name (selector)

Tuesday, September 28, 2010

Page 23: iPhone for .NET Developers

Memory Management

No garbage collection on the iPhone

Retain / Release

Tuesday, September 28, 2010

Page 24: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Tuesday, September 28, 2010

Page 25: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Foo *foo = [[Foo alloc] init]; 1

Tuesday, September 28, 2010

Page 26: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Foo *foo = [[Foo alloc] init];

[foo retain];

1

2

Tuesday, September 28, 2010

Page 27: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Foo *foo = [[Foo alloc] init];

[foo retain];

[foo release];

1

2

1

Tuesday, September 28, 2010

Page 28: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Foo *foo = [[Foo alloc] init];

[foo retain];

[foo release];

[foo release];

1

2

1

0

Tuesday, September 28, 2010

Page 29: iPhone for .NET Developers

Memory Management

Retain / Release Dance

Foo *foo = [[Foo alloc] init];

[foo retain];

[foo release];

[foo release];

1

2

1

0foo is deallocated

Tuesday, September 28, 2010

Page 30: iPhone for .NET Developers

Getters / Setters

Tuesday, September 28, 2010

Page 31: iPhone for .NET Developers

Getters / Setters

[foo setBar:@"baz"];

Tuesday, September 28, 2010

Page 32: iPhone for .NET Developers

Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"

Tuesday, September 28, 2010

Page 33: iPhone for .NET Developers

Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"

foo.bar = @"gruul";

Tuesday, September 28, 2010

Page 34: iPhone for .NET Developers

Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"

foo.bar //returns @"gruul"

foo.bar = @"gruul";

Tuesday, September 28, 2010

Page 35: iPhone for .NET Developers

Implementing setters

Tuesday, September 28, 2010

Page 36: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value {

Tuesday, September 28, 2010

Page 37: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return;

Tuesday, September 28, 2010

Page 38: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) {

Tuesday, September 28, 2010

Page 39: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release];

Tuesday, September 28, 2010

Page 40: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release]; bar = nil;

Tuesday, September 28, 2010

Page 41: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release]; bar = nil; }

Tuesday, September 28, 2010

Page 42: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release]; bar = nil; }

if(value != nil)

Tuesday, September 28, 2010

Page 43: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release]; bar = nil; }

if(value != nil) bar = [value retain];

Tuesday, September 28, 2010

Page 44: iPhone for .NET Developers

Implementing setters-(void)setBar:(id)value { if(bar == value) return; if(bar != nil) { [bar release]; bar = nil; }

if(value != nil) bar = [value retain];}

Tuesday, September 28, 2010

Page 45: iPhone for .NET Developers

No Thanks

Tuesday, September 28, 2010

Page 46: iPhone for .NET Developers

Properties

Tuesday, September 28, 2010

Page 47: iPhone for .NET Developers

Properties//Foo.h

Tuesday, September 28, 2010

Page 48: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;

Tuesday, September 28, 2010

Page 49: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

Tuesday, September 28, 2010

Page 50: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m

Tuesday, September 28, 2010

Page 51: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

Tuesday, September 28, 2010

Page 52: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

-(void)dealloc {

Tuesday, September 28, 2010

Page 53: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

-(void)dealloc {

[image release];

Tuesday, September 28, 2010

Page 54: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

-(void)dealloc {

[image release]; [message release];

Tuesday, September 28, 2010

Page 55: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

-(void)dealloc {

[image release]; [message release];

[super dealloc];

Tuesday, September 28, 2010

Page 56: iPhone for .NET Developers

Properties//Foo.h@property (nonatomic, retain) UIImage *image;@property (nonatomic, copy) NSString *message;

//Foo.m@synthesize image, message;

-(void)dealloc {

[image release]; [message release];

[super dealloc];}

Tuesday, September 28, 2010

Page 57: iPhone for .NET Developers

Dot Syntax Dogma

Use dot syntax if you like it

Just be aware of what it's hiding

Tuesday, September 28, 2010

Page 58: iPhone for .NET Developers

Xcode

Your IDE

Code completion

Interactive Debugger

Lacks good refactoring tools

Tuesday, September 28, 2010

Page 59: iPhone for .NET Developers

Interface Builder

Drag-n-drop UI building

Layouts are defined in XIBs (XML representation). Usually called "Nibs"

"Make connections" with classes defined in Xcode

variables --> UI components

UI events --> methods

Tuesday, September 28, 2010

Page 60: iPhone for .NET Developers

Instruments

Find Memory Leaks

Analyze Memory Usage

Track down slow code

Tuesday, September 28, 2010

Page 61: iPhone for .NET Developers

iOS SDK

Your app

UIKit

CoreFoundation

CoreGraphics

Accelerate

AddressBook

AudioToolbox

AVFoundation

CoreAudio

CoreData

CoreLocation

CoreMotion

CoreTelephony

CoreText

CoreVideo

GameKit

iAd

MapKit

CFNetwork StoreKit

Tuesday, September 28, 2010

Page 62: iPhone for .NET Developers

Model View Controller

Model View

Controller

Tuesday, September 28, 2010

Page 63: iPhone for .NET Developers

The View Controller

Handles setup logic for a screen

Handles user input

Interacts with the model

Contains 1 or more views

Tuesday, September 28, 2010

Page 64: iPhone for .NET Developers

The View

Visual representation

Drawing

Laying out subviews (autorotation)

May Handle touch events

Tuesday, September 28, 2010

Page 65: iPhone for .NET Developers

Lifecycle of an App

main.m

Tuesday, September 28, 2010

Page 66: iPhone for .NET Developers

Lifecycle of an App

main.m

UIApplication

Tuesday, September 28, 2010

Page 67: iPhone for .NET Developers

Lifecycle of an App

main.m

UIApplication

Tuesday, September 28, 2010

Page 68: iPhone for .NET Developers

Lifecycle of an App

main.m MainWindow.xib

UIApplication

Tuesday, September 28, 2010

Page 69: iPhone for .NET Developers

Lifecycle of an App

main.m MainWindow.xib

UIApplication

Tuesday, September 28, 2010

Page 70: iPhone for .NET Developers

Lifecycle of an App

YourAppDelegate

main.m MainWindow.xib

UIApplication

Root View ControllerUIWindow

Tuesday, September 28, 2010

Page 71: iPhone for .NET Developers

Lifecycle of an App

YourAppDelegate

main.m MainWindow.xib

UIApplication

Root View Controller

applicationDidFinishLaunching

UIWindow

Tuesday, September 28, 2010

Page 72: iPhone for .NET Developers

Time to code!

Tuesday, September 28, 2010


Recommended