iPhone OS
 The Next
   Killer
 Platform
Why all the excitement?
Why all the excitement?
• Compelling, stylish products built on multi-
  touch interface
  • iPod Touch
  • iPhone
  • iPad
Why all the excitement?
• Compelling, stylish products built on multi-
  touch interface
  • iPod Touch
  • iPhone
  • iPad
• Applications marketplace (AppStore)
Why all the excitement?
• Compelling, stylish products built on multi-
  touch interface
  • iPod Touch
  • iPhone
  • iPad
• Applications marketplace (AppStore)
• Developer tools and community
iPhone Strengths
iPhone Strengths
• iPhone OS as a platform
iPhone Strengths
• iPhone OS as a platform
• Complete hardware and software product
  offering
  • Apple A4 chip design
iPhone Strengths
• iPhone OS as a platform
• Complete hardware and software product
  offering
  • Apple A4 chip design
• Thriving development community
iPhone Strengths
• iPhone OS as a platform
• Complete hardware and software product
  offering
  • Apple A4 chip design
• Thriving development community
• Blossoming applications marketplace
iPhone Strengths
• iPhone OS as a platform
• Complete hardware and software product
  offering
  • Apple A4 chip design
• Thriving development community
• Blossoming applications marketplace
• Cult-like brand loyalty
iPhone Weaknesses
iPhone Weaknesses
• Exclusivity agreement with AT&T
iPhone Weaknesses
• Exclusivity agreement with AT&T
• Proprietary SDK and licensing agreements
iPhone Weaknesses
• Exclusivity agreement with AT&T
• Proprietary SDK and licensing agreements
• App Store app submission and approval
 process
iPhone Opportunities
iPhone Opportunities
• Expansion of iPhone/iPad to multiple cellular
  networks
iPhone Opportunities
• Expansion of iPhone/iPad to multiple cellular
  networks
• Captivated development community
iPhone Opportunities
• Expansion of iPhone/iPad to multiple cellular
  networks
• Captivated development community
• Captivated gaming community
iPhone Opportunities
• Expansion of iPhone/iPad to multiple cellular
  networks
• Captivated development community
• Captivated gaming community
• Extensibility of the device through External
  Accessory framework
iPhone Threats
iPhone Threats
• Android OS and Google
iPhone Threats
• Android OS and Google
• Other mobile/tablet platforms
iPhone Threats
• Android OS and Google
• Other mobile/tablet platforms
• User reluctance to move to a multi-touch
  user interface
iPhone SDK
iPhone SDK
Key Features
iPhone SDK
Key Features

 • Tools to design, build, test, and deploy
iPhone SDK
Key Features

 • Tools to design, build, test, and deploy
 • Powerful, full-featured APIs
iPhone SDK
Key Features

 • Tools to design, build, test, and deploy
 • Powerful, full-featured APIs
 • Consistent
   • Greatly aides in learning iPhone development
iPhone SDK
Key Features

 • Tools to design, build, test, and deploy
 • Powerful, full-featured APIs
 • Consistent
   • Greatly aides in learning iPhone development
 • Leverages hardware capabilities of device
iPhone SDK
Key Features

 • Tools to design, build, test, and deploy
 • Powerful, full-featured APIs
 • Consistent
   • Greatly aides in learning iPhone development
 • Leverages hardware capabilities of device
 • Written in Objective-C
   • Lower-level frameworks in standard C
Objective-C
Objective-C
The old new hotness
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
 • Native iPhone SDK language
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
 • Native iPhone SDK language
 • Flexible typing
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
 • Native iPhone SDK language
 • Flexible typing
 • Simple, expressive syntax
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
 • Native iPhone SDK language
 • Flexible typing
 • Simple, expressive syntax
 • Dynamic runtime
Objective-C
The old new hotness
 • Strict superset of ANSI C
   • Object-oriented extensions
   • Additional syntax and types
 • Native iPhone SDK language
 • Flexible typing
 • Simple, expressive syntax
 • Dynamic runtime
 • Reference counting for memory
  management
Objective-C Resources
iPhone SDK Frameworks
iPhone SDK Frameworks




     BSD UNIX / Kernel Services
iPhone SDK Frameworks




         Core Frameworks


     BSD UNIX / Kernel Services
iPhone SDK Frameworks



               Media


         Core Frameworks


     BSD UNIX / Kernel Services
iPhone SDK Frameworks

            Cocoa Touch


               Media


         Core Frameworks


     BSD UNIX / Kernel Services
Cocoa Touch
Foundation Framework
Cocoa Touch
Foundation Framework

 • Core framework for non-UI functionality
Cocoa Touch
Foundation Framework

 • Core framework for non-UI functionality
 • Operating System Classes
   • threading, archiving, filesystem
Cocoa Touch
Foundation Framework

 • Core framework for non-UI functionality
 • Operating System Classes
   • threading, archiving, filesystem
 • Collections
   • Common collection types: arrays, sets, maps
Cocoa Touch
Foundation Framework

 • Core framework for non-UI functionality
 • Operating System Classes
   • threading, archiving, filesystem
 • Collections
   • Common collection types: arrays, sets, maps
 • Networking support
Cocoa Touch
Foundation Framework

 • Core framework for non-UI functionality
 • Operating System Classes
   • threading, archiving, filesystem
 • Collections
   • Common collection types: arrays, sets, maps
 • Networking support
 • XML Processing
Cocoa Touch
UIKit Framework
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
 • User Interface Elements
   • Views, tables, buttons, images, etc.
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
 • User Interface Elements
   • Views, tables, buttons, images, etc.
 • View Controllers
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
 • User Interface Elements
   • Views, tables, buttons, images, etc.
 • View Controllers
 • Multitouch Event Handling
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
 • User Interface Elements
   • Views, tables, buttons, images, etc.
 • View Controllers
 • Multitouch Event Handling
 • Accelerometer
Cocoa Touch
UIKit Framework

 • Framework for building iPhone user interfaces
 • User Interface Elements
   • Views, tables, buttons, images, etc.
 • View Controllers
 • Multitouch Event Handling
 • Accelerometer
 • High-level Drawing Routines
iPhone SDK Tools
XCode
XCode
XCode
• Apple’s IDE for creating Mac and iPhone apps
XCode
• Apple’s IDE for creating Mac and iPhone apps
• Provides visual front end to GCC and GDB
XCode
• Apple’s IDE for creating Mac and iPhone apps
• Provides visual front end to GCC and GDB
• Hub of development process:
     Editing               Testing
     Building              Model Design
     Refactoring           Deployment
     Debugging             Code Signing
     API Doc Integration   Project Configuration
Interface Builder
Interface Builder
Interface Builder
 • Visual user interface builder
Interface Builder
 • Visual user interface builder
   • Layout and configuration of user interface
Interface Builder
 • Visual user interface builder
   • Layout and configuration of user interface
   • Visual layout guides based on Apple's HIG
Interface Builder
 • Visual user interface builder
   • Layout and configuration of user interface
   • Visual layout guides based on Apple's HIG
 • Graphically wire UI components
Interface Builder
 • Visual user interface builder
   • Layout and configuration of user interface
   • Visual layout guides based on Apple's HIG
 • Graphically wire UI components
 • Seamless integration with XCode
iPhone Simulator
iPhone Simulator
iPhone Simulator
• Faster code, build, test cycle
iPhone Simulator
• Faster code, build, test cycle
• Test behaviors: rotation, shake, multi-touch
iPhone Simulator
• Faster code, build, test cycle
• Test behaviors: rotation, shake, multi-touch
• Easier to test exceptional conditions
iPhone Simulator
• Faster code, build, test cycle
• Test behaviors: rotation, shake, multi-touch
• Easier to test exceptional conditions
• iPhone Simulator != iPhone:
   • No memory or CPU limits
   • Not all APIs and capabilities available:
     • Core Location, Keychain, etc.
Instruments
Instruments
Instruments

• Dynamic tracing and profiling tool
Instruments

• Dynamic tracing and profiling tool
 • Visual front end to DTrace
Instruments

• Dynamic tracing and profiling tool
 • Visual front end to DTrace
• Uses digital audio workstation-like interface
Instruments

• Dynamic tracing and profiling tool
 • Visual front end to DTrace
• Uses digital audio workstation-like interface
• Large library of standard instruments
 • CPU Sampler, Core Animation, Leaks, etc.
 • Can build custom DTrace instruments
Instruments

• Dynamic tracing and profiling tool
 • Visual front end to DTrace
• Uses digital audio workstation-like interface
• Large library of standard instruments
 • CPU Sampler, Core Animation, Leaks, etc.
 • Can build custom DTrace instruments
• Wireless profiling in iPhone SDK 3.1+
One more thing...

iPhone OS: The Next Killer Platform