iphone programming in 30 minutes (?) [fts]
DESCRIPTION
Talk at PhD Computer Science students’ Journal Club in Cardiff University (FTS - Food, Talks and Stuff).TRANSCRIPT
![Page 1: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/1.jpg)
iPhone Programming in ~30 mins (?)
Diego Pizzocaro
27.01.2010FTS seminar
![Page 2: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/2.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/3.jpg)
Crash course
• iPhone OS overview
• Objective-C
• Model-View-Controller (MVC)
![Page 4: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/4.jpg)
iPhone OS overview
![Page 5: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/5.jpg)
iPhone
![Page 6: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/6.jpg)
Mac OS X
Cocoa
Media
Core Services
Core OS
![Page 7: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/7.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/8.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/9.jpg)
Objective-C
![Page 10: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/10.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/11.jpg)
Message Syntax
[receiver message];
[receiver message:argument];
[receiver message:arg1 andArg:arg2];
![Page 12: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/12.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/13.jpg)
Some new types
• Anonymous Objects
• Class
• ...others but no time!
(Selectors “SEL”, Boolean “BOOL”, etc.)
![Page 14: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/14.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/15.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/16.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/17.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/18.jpg)
Model - View - Controller (MVC)
![Page 19: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/19.jpg)
Address Book
![Page 20: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/20.jpg)
App Architecture
Model View
Controller
![Page 21: iPhone Programming in 30 minutes (?) [FTS]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/21.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/22.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/23.jpg)
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]](https://reader033.vdocument.in/reader033/viewer/2022051400/553888ba550346f53d8b47c4/html5/thumbnails/24.jpg)
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