24
iPhone Programming in ~30 mins (?) Diego Pizzocaro 27.01.2010 FTS seminar

iPhone Programming in 30 minutes (?) [FTS]

Embed Size (px)

DESCRIPTION

Talk at PhD Computer Science students’ Journal Club in Cardiff University (FTS - Food, Talks and Stuff).

Citation preview

Page 1: iPhone Programming in 30 minutes (?) [FTS]

iPhone Programming in ~30 mins (?)

Diego Pizzocaro

27.01.2010FTS seminar

Page 2: iPhone Programming in 30 minutes (?) [FTS]

These slides are heavily based on Evan Doll and Alan Cannistraro’s slides prepared for iPhone App Programming course @ Stanford

http://www.stanford.edu/class/cs193p

Look for iPhone Application Programming in iTunes U for videopodcasts.

Disclaimer

Page 3: iPhone Programming in 30 minutes (?) [FTS]

Crash course

• iPhone OS overview

• Objective-C

• Model-View-Controller (MVC)

Page 4: iPhone Programming in 30 minutes (?) [FTS]

iPhone OS overview

Page 5: iPhone Programming in 30 minutes (?) [FTS]

iPhone

Page 6: iPhone Programming in 30 minutes (?) [FTS]

Mac OS X

Cocoa

Media

Core Services

Core OS

Page 7: iPhone Programming in 30 minutes (?) [FTS]

iPhone

Cocoa Touch

Media

Core Services

Core OS

UI application framework

which as a developer you

are using the most

Page 8: iPhone Programming in 30 minutes (?) [FTS]

Cocoa Touch

Developing on iPhone

Xcode Interface Builder

Tools

Language (& Runtime)

Objective-C

[textView setStringValue: @“Hello”];

Frameworks

Foundation UIKit

Thursday, April 2, 2009

Xcode Interface Builder

Tools

Language (& Runtime)

Objective-C

[textView setStringValue: @“Hello”];

Frameworks

Foundation UIKit

Thursday, April 2, 2009

Tools

Xcode Interface Builder

Frameworks

Xcode Interface Builder

Tools

Language (& Runtime)

Objective-C

[textView setStringValue: @“Hello”];

Frameworks

Foundation UIKit

Thursday, April 2, 2009

Foundation UIKit

Language (& Runtime)

[textView setStringValue: @“Hello”];Objective-C

Page 9: iPhone Programming in 30 minutes (?) [FTS]

Objective-C

Page 10: iPhone Programming in 30 minutes (?) [FTS]

Objective-C• Strict superset of C

‣ Mix C with Obj-C

• Object oriented language

• Based on message passing (similar to Smalltalk)

• No garbage collector need to manually manage memory(not covered in this presentation)

Page 11: iPhone Programming in 30 minutes (?) [FTS]

Message Syntax

[receiver message];

[receiver message:argument];

[receiver message:arg1 andArg:arg2];

Page 12: iPhone Programming in 30 minutes (?) [FTS]

Message Examples

BankAccount *myAccount; //assume this exists

int n = [myAccount accountNumber];

[myAccount deposit:100];

if([myAccount isNotEmpty]) { [myAccount withdraw:50 printReceipt:YES];

}

Page 13: iPhone Programming in 30 minutes (?) [FTS]

Some new types

• Anonymous Objects

• Class

• ...others but no time!

(Selectors “SEL”, Boolean “BOOL”, etc.)

Page 14: iPhone Programming in 30 minutes (?) [FTS]

Anonymous Objects

• Normal (or Statically-typed) object

BankAccount *anAccount

• Anonymous (or Dynamically-typed) object

id anAccount

- Just id (Not id*)

- id is the data type that indicates that we are talking about an object

Page 15: iPhone Programming in 30 minutes (?) [FTS]

Class

• class instances responds to instance methods “-”- (id)init; - (double)accountNumber;

int n = [myAccount accountNumber];

• classes responds to class methods “+” (like Java “static” methods)

+ (id)alloc;

+ (float)stdInterestRate;

float rate = [BankAccount stdInterestRate];

Page 16: iPhone Programming in 30 minutes (?) [FTS]

Defining a classDefining a classA public header and a private implementation

Header File Implementation File

Defining a classA public header and a private implementation

Header File Implementation FileHeader File Implementation File

A public header and a private implementation

Page 17: iPhone Programming in 30 minutes (?) [FTS]

DemoDefining a classA public header and a private implementation

Header File Implementation File

Defining a classA public header and a private implementation

Header File Implementation FileBankAccount.h BankAccount.m

BankAccount class

Page 18: iPhone Programming in 30 minutes (?) [FTS]

Model - View - Controller (MVC)

Page 19: iPhone Programming in 30 minutes (?) [FTS]

Address Book

Page 20: iPhone Programming in 30 minutes (?) [FTS]

App Architecture

Model View

Controller

Page 21: iPhone Programming in 30 minutes (?) [FTS]

Xcode

Interface Builder

Model View

Controller

MVC• Only the Controller knows both Model and View

• Makes code more reusable (especially the Model part)

Page 22: iPhone Programming in 30 minutes (?) [FTS]

Demo

BankAccount

balance

- initWithBalance- setBalance- balance

BankAccount

balance

- initWithBalance- setBalance- balance

BankAccount

balance

- initWithBalance- setBalance- balance

ModelBankAccount app

ViewMainWindow.xib

AccountController

sliderlabelmyBankAccount

- updateAccount

Controller

Value Changed EVENT

Outlets

Action

Page 23: iPhone Programming in 30 minutes (?) [FTS]

Demo

BankAccount

balance

- initWithBalance- setBalance- balance

BankAccount

balance

- initWithBalance- setBalance- balance

BankAccount

balance

- initWithBalance- setBalance- balance

ModelBankAccount app

ViewMainWindow.xib

AccountController

sliderlabelmyBankAccount

- updateAccount

Controller

Value Changed EVENT

Page 24: iPhone Programming in 30 minutes (?) [FTS]

Your turn! ;)

Image from: http://www.trumpetvine.com/sketchblog/wp-content/images/2007.07/iphone_lg.jpg

• http://www.stanford.edu/class/cs193p

• http://cs193p.com/

• iTunes U - “iPhone Application Programming”

• iPhone Developer Program

(FREE, but cannot deploy on real iPhone)

• users.cs.cf.ac.uk/D.Pizzocaro