2. Acknowledgements
• Slides based on the iOS App Development
course at UMBC (http://
cs491f10.wordpress.com/)
and
CS 193P at Stanford University (http://
www.stanford.edu/class/cs193p/cgi-bin/
drupal/)
Thursday 26 July 12
3. Course Description
• This course provides a study of the design,
development and publication of object-oriented
applications for iOS platforms (e.g. iPhone, iPod
touch & iPad) using the Apple SDK. Students will
learn to utilise Objective-C and the various SDK
frameworks to build iPhone & iPod touch
applications under Mac OS X.
• Prerequisites: RW 214 and RW 344
• Recommended: Competency in C or C++
(pointers, memory management, etc.)
Thursday 26 July 12
4. Course Objectives
• Gain an understanding of the Objective-C language
• Become familiar with the Apple development tools
• Understand and apply design patterns in order to
build mobile applications
• Understand and utilise hardware emerging in
today’s mobile devices
• Be able to utilise core frameworks of iOS
Thursday 26 July 12
7. Project
• Theme: Mobile for African problems
• Functional specification (What): 5%
• Compare to existing products (Why)
• Task list with milestones and deadlines,
mockup: 5%
• Final project and demo: 20%
Thursday 26 July 12
8. Grading Criteria
• Correctness of App
• Appearance of App
• Adherence to Objective-C and iOS coding
conventions
• Neatly formatted and indented code
• Well documented header files
• Absence of significant performance issues
• Absence of memory leaks
Thursday 26 July 12
9. iOS Developer University Program
• Apple has a free iOS University program that
provides more benefits than the free registration,
including:
• Free on-device development
• Developer forum access
• We will be participating in this program this
semester, so if you have an iPhone, iPod touch or
iPad, you’ll be able to install and run your apps on-
device
Thursday 26 July 12
10. When / Where did it all
start?
Thursday 26 July 12
13. iOS Core OS
Core OS Power
Cocoa Touch OS X Kernel
Management
OSX Kernel Power Management
Keychain
Media Mach 3.0
Mach 3.0 Keychain Access
Access
BSD
BSD Certificates
Certificates
Core Services
Sockets
Sockets File System
File System
Core OS Security Bonjour
Security Bonjour
Thursday 26 July 12
14. iOS Core Services
Core OS
Cocoa Touch Collections Core Location
OSX Kernel Power Management
Media Address Book Net Services
Mach 3.0 Keychain Access
BSD
Networking Certificates
Threading
Core Services
Sockets
File Access File System
Preferences
Core OS Security Bonjour
SQLite URL Utilities
Thursday 26 July 12
15. iOS Media
Core OS JPEG, PNG,
Cocoa Touch Core Audio
TIFF
OSX Kernel Power Management
Media OpenAL PDF
Mach 3.0 Keychain Access
BSD Mixing Quartz (2D)
Audio Certificates
Core Services
Sockets
Audio Core System
File
Recording Animation
Core OS Security Bonjour
Video
OpenGL ES
Playback
Thursday 26 July 12
16. iOS Cocoa Touch
Core OS
Cocoa Touch Multi-Touch Alerts
OSX Kernel Power Management
Media Core Motion Web View
Mach 3.0 Keychain Access
View
BSD
Hierarchy Certificates
Map Kit
Core Services
Sockets
Localisation File System
Image Picker
Core OS Security Bonjour
Controls Camera
Thursday 26 July 12
20. Development Stack — Frameworks
Development Stack — Frameworks
Foundation Address Book Map Kit Core Data
UI Kit Core Animation OpenGL
Many Others...
Thursday 26 July 12
21. Development Stack — Language &
Development Stack — Language & Runtime
Runtime
Objective-C
Thursday 26 July 12
23. Hello World
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// insert code here...
NSLog(@"Hello, World!");
!
[pool drain];
return 0;
}
Thursday 26 July 12
24. Import Statement
#import <Foundation/Foundation.h>
• Exactly like a #include in C/C++, however it ensures that the
header is only ever included once
• Foundation/Foundation.h includes many core functions,
constants, and objects
Thursday 26 July 12
25. main
int main (int argc, const char * argv[]) {
....
return 0;
}
• Exactly like a main section in C or C++
• argc contains the number of command line arguments
• argv is an array of char pointers (C strings)
• main returns a value indicating success or failure
• By convention zero is success, non-zero is failure
Thursday 26 July 12
26. Pools
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
...
[pool drain];
• These lines allocate an NSAutoreleasePool that is used for
memory management
• We’ll cover memory management in some detail in the
coming classes, but for now we’ll just be sure to include this
code and put our program between these 2 statements
Thursday 26 July 12
27. NSLog and @“strings”
NSLog(@"Hello, World!");
• NSLog is a function that’s used for printing a string to the
console (with some other logging information)
• Note the goofy @ symbol out in front of the double quoted
string
• The @ symbol is used to distinguish the string as an
Objective-C string (as opposed to a C string)
• NSLog behaves much like C’s printf function in that it can
take formatters using % notation and variable number of
arguments
Thursday 26 July 12