SlideShare a Scribd company logo
1 of 91
iPhone
OS
Apps
Development
the basics (again)
Smartphone Sales 09 - 172m




                     Competitive Landscape: Mobile Devices
                      Worldwide, 4Q09 and 2009, Gartner
Smartphone Sales 09 - 172m

     Symbian       80,878             47%

       RIM         34,346             20%

   iPhone OS       24,889            14%
  Windows Mobile   15,027               9%

      Linux         8,126               5%

     Android        6,798               4%

      Others        1,305               1%



                        Competitive Landscape: Mobile Devices
                         Worldwide, 4Q09 and 2009, Gartner
140,000 Apps
 58m Users                      28,000 Developers

      4.8 apps downloaded per user (dec)

                                           since july 08

$4.37 per user per month

                        280m apps downloaded (dec 09)


         3,000,000,000+ dls
What Developers Need to Know
Device/Platform
  Limitations
Device/Platform
  Limitations

 One App at a Time
Device/Platform
  Limitations

 One App at a Time

One Screen at a Time
Device/Platform
  Limitations

 One App at a Time

One Screen at a Time

   Limited Access
Device/Platform
    Limitations

    One App at a Time

   One Screen at a Time

      Limited Access

Limited Memory (128/256MB)
Device/Platform
    Limitations

    One App at a Time

   One Screen at a Time

      Limited Access

Limited Memory (128/256MB)

   Compact Screen Size
Device/Platform
    Limitations

    One App at a Time

   One Screen at a Time

      Limited Access

Limited Memory (128/256MB)

   Compact Screen Size

     Limited Control
Metaphors
model your application’s objects
  and actions on objects and
   actions in the real world
Aesthetic
Integrity
 A measure of how well the
appearance of your application
 integrates with its functions
Focus on Primary Task
Focus on Primary Task

  Make it Obvious
Focus on Primary Task

  Make it Obvious

   Minimize Input
Focus on Primary Task

  Make it Obvious

   Minimize Input

  Minimize Choices
Focus on Primary Task

  Make it Obvious

   Minimize Input

  Minimize Choices

 Immediate Feedback
iPhone OS & SDK
iPhone OS & SDK
iPhone OS & SDK




A Stack of Frameworks, High to Low
iPhone OS & SDK
iPhone OS & SDK



                UIKit                       Address Book UI
copy & paste, UI controls, touch & motion
  handling, graphics & windowing, app
management, foundation, accelerometers
   stats, camera control, photo library,    Push Notifications
              sensors stats...


             Game Kit                          Message UI


                                                 Map Kit
iPhone OS & SDK
iPhone OS & SDK




Quartz (2d vector)        Core Audio

 Core Animation             OpenAL

   OpenGL ES         Media Player Framework
iPhone OS & SDK
iPhone OS & SDK




   Core Data          Store Kit

Core Foundation       SQLite

 Core Location      XML Support
iPhone OS & SDK
iPhone OS & SDK

               CFNetwork

            Accessory Support

                  Security

                Threading

                File Access

           Memory Management
UI components and Frameworks




Navigation/Tool Bars,
                         Tab Bars, iPod library
Network Connectivity
UI components and Frameworks




       TableViews, Core Data, sqlite
UI components and Frameworks




 Text Views, Emails,
                       Mapkit, GPS
Network Connectivity
Rolling your own UI components?
The SDK
Xcode
Xcode
Xcode
Interface Builder
Instruments & Shark
Instruments & Shark
Objective-C
Founded in 86, licensed by NeXT in 88


    Superset of C with OO features


Polymorphism, inheritance, class, interface
send messages to object instances to call a method




Properties and Synthesize
Memory Management

      Cocoa relies on reference counting

No automatic Garbage Collection on iPhone OS
First App
First App
A UIWindow with a UILabel, without Interface Builder
First App
A UIWindow with a UILabel, without Interface Builder
First App
A UIWindow with a UILabel, without Interface Builder
First App
  Fire up Xcode
First App
Initiates your app in the App Delegate class
AppDelegate.m
AppDelegate.m
                “Don’t Call Me,
                 I’ll Call You.”


                   the iPhone OS is in
                    control of our app
Second App
Second App
A UIWindow with two UIImages: one local, one web
Second App
A UIWindow with two UIImages: one local, one web
Demo
Second App
A UIWindow with two UIImages: one local, one web
Second App
Same gig, different acts
Third App
Third App
Introducing ViewControllers and Animation
Third App
Orientation Changes + Motion Detection + Animation
Demo
Third App
Orientation Changes + Motion Detection + Animation
Third App
App Delegate class made simple
Third App
Display logic in View Controller class
Third App
Handling Orientation Changes in View Controller class
Third App
Shuffle Images upon Shake in View Controller class
Fourth App: a simple game
     UIButtons + NSTimer + Animation
Count Up Timer
Life Meter




 Player




 Guard




               Buttons
Demo
Count Up Timer
Life Meter




 Player




 Guard




               Buttons
Life Meter                                                   GameAppDelegate                    Player
                                                (void)applicationDidFinishLaunching: (UIApp*)app

                      LifeMeter                                                                                    Convict : UIImageView
      UILabel *lifeLabel;                                                                                 NSInteger horizontalPosition;
      UIImageView *life1SymbolImageView;                                                                  UIImage *convictImage;
      UIImageView *life2SymbolImageView;                                                                  BOOL isBeingHit;
      UIImageView *life3SymbolImageView;                                                                  NSTimer *paralyzedTimer;
      UIImageView *life4SymbolImageView;                                                           - (void) startCrawling;
      UIImageView *life5SymbolImageView;                                                           - (void) gotHit;
      NSInteger numberOfLivesLeft;                                                                 - (void) goDie;
                                                                                                   - (id) initWithFrame:(CGRect)aRect;
 - (void) reduceLifeMeterByOne;                                                                    - (void) recoveredFromHit:(NSString *)animationID
 - (void) reduceLifeMeterByOneAnimationDone:                                                       finished:(NSNumber *) finished context:(void *)
 (NSString *)animationID finished:(NSNumber *)                                                      context;
 finished context:(void *) context;



                                                                  GameViewController
                                                     UIImageView *bottomPanel
                                                     UIButton *firstButton
                                                     UIButton *secondButton
                                                     UIButton *thirdButton
                                                     Convict *convict
                                                     Guard *guard                                             Buttons
                                                     LifeMeter *lifeMeter
Guard                                                TimerClock *timerClockView
                                                     - (void) initControls
                                                     - (void) initConvict
                      Guard                                                                                                   TimerClock
                                                     - (void) initGuard                                   UILabel *clockLabel
UIImage *guardImage
                                                                                                          NSDate* currentDate
UIImageView *nozzleFireImageView
                                                                                                          CGFloat secondsElapsed
UILabel *nowLoadingLabel                                                                                  NSTimer *updateLabelTimer
BOOL gunIsAiming                                                                                          -(void)updateLabel: (NSTimer*) updateLabelTimer
BOOL gunIsFiring                                                                                          -(void)stopTimer;
BOOL isFinalShot
NSTimer *startsAimingTimer
NSTimer *startsReloadingTimer
CFURLRef soundFileURLRef
SystemSoundID          soundFileObject
                                                                                                            Count Up Timer
- (id) init;
- (void) startsAiming;
- (void) startsReloading;
- (void) startsFiring;
- (void) finalShot;
- (void) restNow;
- (void) firingStopped:(NSString *)animationID
finished:(NSNumber *) finished context:(void *)
context;
GameViewController                            Guard
                                  UIImage *guardImage
UIImageView *bottomPanel          UIImageView *nozzleFireImageView
UIButton *firstButton              UILabel *nowLoadingLabel
UIButton *secondButton            BOOL gunIsAiming
                                  BOOL gunIsFiring
UIButton *thirdButton
                                  BOOL isFinalShot
Convict *convict                  NSTimer *startsAimingTimer
Guard *guard                      NSTimer *startsReloadingTimer
LifeMeter *lifeMeter              CFURLRef soundFileURLRef
                                  SystemSoundID          soundFileObject
TimerClock *timerClockView        - (id) init;
- (void) initControls             - (void) startsAiming;
- (void) initConvict              - (void) startsReloading;
- (void) initGuard                - (void) startsFiring;
                                  - (void) finalShot;
                                  - (void) restNow;
                                  - (void) firingStopped:(NSString *)animationID
                                  finished:(NSNumber *) finished context:(void *)
                                  context;
GameViewController                            Guard
                                  UIImage *guardImage
UIImageView *bottomPanel          UIImageView *nozzleFireImageView
UIButton *firstButton              UILabel *nowLoadingLabel
UIButton *secondButton            BOOL gunIsAiming
                                  BOOL gunIsFiring
UIButton *thirdButton
                                  BOOL isFinalShot
Convict *convict                  NSTimer *startsAimingTimer
Guard *guard                      NSTimer *startsReloadingTimer
LifeMeter *lifeMeter              CFURLRef soundFileURLRef
                                  SystemSoundID          soundFileObject
TimerClock *timerClockView        - (id) init;
- (void) initControls             - (void) startsAiming;
- (void) initConvict              - (void) startsReloading;
- (void) initGuard                - (void) startsFiring;
                                  - (void) finalShot;
                                  - (void) restNow;
                                  - (void) firingStopped:(NSString *)animationID
                                  finished:(NSNumber *) finished context:(void *)
                                  context;
GameViewController                            Guard
                                  UIImage *guardImage
UIImageView *bottomPanel          UIImageView *nozzleFireImageView
UIButton *firstButton              UILabel *nowLoadingLabel
UIButton *secondButton            BOOL gunIsAiming
                                  BOOL gunIsFiring
UIButton *thirdButton
                                  BOOL isFinalShot
Convict *convict                  NSTimer *startsAimingTimer
Guard *guard                      NSTimer *startsReloadingTimer
LifeMeter *lifeMeter              CFURLRef soundFileURLRef
                                  SystemSoundID          soundFileObject
TimerClock *timerClockView        - (id) init;
- (void) initControls             - (void) startsAiming;
- (void) initConvict              - (void) startsReloading;
- (void) initGuard                - (void) startsFiring;
                                  - (void) finalShot;
                                  - (void) restNow;
                                  - (void) firingStopped:(NSString *)animationID
                                  finished:(NSNumber *) finished context:(void *)
                                  context;
GameViewController                   Convict : UIImageView
UIImageView *bottomPanel                 NSInteger horizontalPosition;
UIButton *firstButton                     UIImage *convictImage;
UIButton *secondButton                   BOOL isBeingHit;
UIButton *thirdButton                    NSTimer *paralyzedTimer;
Convict *convict                  - (void) startCrawling;
Guard *guard                      - (void) gotHit;
LifeMeter *lifeMeter              - (void) goDie;
TimerClock *timerClockView        - (id) initWithFrame:(CGRect)aRect;
- (void) initControls             - (void) recoveredFromHit:(NSString *)animationID
- (void) initConvict              finished:(NSNumber *) finished context:(void *)
- (void) initGuard                context;
Guard
UIImage *guardImage
UIImageView *nozzleFireImageView
UILabel *nowLoadingLabel
BOOL gunIsAiming
BOOL gunIsFiring
BOOL isFinalShot
NSTimer *startsAimingTimer
NSTimer *startsReloadingTimer
CFURLRef soundFileURLRef
SystemSoundID          soundFileObject
- (id) init;
- (void) startsAiming;
- (void) startsReloading;
- (void) startsFiring;
- (void) finalShot;
- (void) restNow;
- (void) firingStopped:(NSString *)animationID
finished:(NSNumber *) finished context:(void *)
context;
Closing Thoughts...
questions?

More Related Content

Similar to Iphone os dev sharing with new examples

iOS overview
iOS overviewiOS overview
iOS overviewgupta25
 
2011 py con
2011 py con2011 py con
2011 py conEing Ong
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケースKatsumi Kishikawa
 
Implementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesImplementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesDouglass Turner
 
Ruby motion勉強会 2012年7月
Ruby motion勉強会 2012年7月Ruby motion勉強会 2012年7月
Ruby motion勉強会 2012年7月Eihiro Saishu
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Xamarin
 
Shape12 6
Shape12 6Shape12 6
Shape12 6pslulli
 
iPhoneOS3.1でのカメラAPIについて
iPhoneOS3.1でのカメラAPIについてiPhoneOS3.1でのカメラAPIについて
iPhoneOS3.1でのカメラAPIについてKyosuke Takayama
 
Victor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIVictor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIDmitri Nesteruk
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Danny Preussler
 
Android, the life of your app
Android, the life of your appAndroid, the life of your app
Android, the life of your appEyal Lezmy
 
Game development with Cocos2d
Game development with Cocos2dGame development with Cocos2d
Game development with Cocos2dVinsol
 
Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSIdean France
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder BehindJohn Wilker
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application developmentZoltán Váradi
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentationBitbar
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentanistar sung
 

Similar to Iphone os dev sharing with new examples (20)

iOS overview
iOS overviewiOS overview
iOS overview
 
2011 py con
2011 py con2011 py con
2011 py con
 
cpuk10745
cpuk10745cpuk10745
cpuk10745
 
UIViewControllerのコーナーケース
UIViewControllerのコーナーケースUIViewControllerのコーナーケース
UIViewControllerのコーナーケース
 
Implementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS DevicesImplementing Data Visualization Apps on iOS Devices
Implementing Data Visualization Apps on iOS Devices
 
Ruby motion勉強会 2012年7月
Ruby motion勉強会 2012年7月Ruby motion勉強会 2012年7月
Ruby motion勉強会 2012年7月
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 
iOS Training Session-3
iOS Training Session-3iOS Training Session-3
iOS Training Session-3
 
Shape12 6
Shape12 6Shape12 6
Shape12 6
 
iPhoneOS3.1でのカメラAPIについて
iPhoneOS3.1でのカメラAPIについてiPhoneOS3.1でのカメラAPIについて
iPhoneOS3.1でのカメラAPIについて
 
Victor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UIVictor CG Erofeev - Metro UI
Victor CG Erofeev - Metro UI
 
Java-Events
Java-EventsJava-Events
Java-Events
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
 
Android, the life of your app
Android, the life of your appAndroid, the life of your app
Android, the life of your app
 
Game development with Cocos2d
Game development with Cocos2dGame development with Cocos2d
Game development with Cocos2d
 
Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOS
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder Behind
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application development
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentation
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 

More from kenshin03

Apple inc and Steve Jobs - a bit of history
Apple inc and Steve Jobs - a bit of historyApple inc and Steve Jobs - a bit of history
Apple inc and Steve Jobs - a bit of historykenshin03
 
Visualizing the Search Tail
Visualizing the Search TailVisualizing the Search Tail
Visualizing the Search Tailkenshin03
 
Good presentation styles
Good presentation stylesGood presentation styles
Good presentation styleskenshin03
 
Css Primer - basic stuff
Css Primer - basic stuffCss Primer - basic stuff
Css Primer - basic stuffkenshin03
 
Search Monkey Overview
Search Monkey OverviewSearch Monkey Overview
Search Monkey Overviewkenshin03
 
Yahoo! Search Monkey in 3 slides
Yahoo! Search Monkey in 3 slidesYahoo! Search Monkey in 3 slides
Yahoo! Search Monkey in 3 slideskenshin03
 
iPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicsiPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicskenshin03
 

More from kenshin03 (7)

Apple inc and Steve Jobs - a bit of history
Apple inc and Steve Jobs - a bit of historyApple inc and Steve Jobs - a bit of history
Apple inc and Steve Jobs - a bit of history
 
Visualizing the Search Tail
Visualizing the Search TailVisualizing the Search Tail
Visualizing the Search Tail
 
Good presentation styles
Good presentation stylesGood presentation styles
Good presentation styles
 
Css Primer - basic stuff
Css Primer - basic stuffCss Primer - basic stuff
Css Primer - basic stuff
 
Search Monkey Overview
Search Monkey OverviewSearch Monkey Overview
Search Monkey Overview
 
Yahoo! Search Monkey in 3 slides
Yahoo! Search Monkey in 3 slidesYahoo! Search Monkey in 3 slides
Yahoo! Search Monkey in 3 slides
 
iPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basicsiPhone SDK dev sharing - the very basics
iPhone SDK dev sharing - the very basics
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Iphone os dev sharing with new examples

  • 2. Smartphone Sales 09 - 172m Competitive Landscape: Mobile Devices Worldwide, 4Q09 and 2009, Gartner
  • 3. Smartphone Sales 09 - 172m Symbian 80,878 47% RIM 34,346 20% iPhone OS 24,889 14% Windows Mobile 15,027 9% Linux 8,126 5% Android 6,798 4% Others 1,305 1% Competitive Landscape: Mobile Devices Worldwide, 4Q09 and 2009, Gartner
  • 4.
  • 5. 140,000 Apps 58m Users 28,000 Developers 4.8 apps downloaded per user (dec) since july 08 $4.37 per user per month 280m apps downloaded (dec 09) 3,000,000,000+ dls
  • 6.
  • 7.
  • 8.
  • 9.
  • 12. Device/Platform Limitations One App at a Time
  • 13. Device/Platform Limitations One App at a Time One Screen at a Time
  • 14. Device/Platform Limitations One App at a Time One Screen at a Time Limited Access
  • 15. Device/Platform Limitations One App at a Time One Screen at a Time Limited Access Limited Memory (128/256MB)
  • 16. Device/Platform Limitations One App at a Time One Screen at a Time Limited Access Limited Memory (128/256MB) Compact Screen Size
  • 17. Device/Platform Limitations One App at a Time One Screen at a Time Limited Access Limited Memory (128/256MB) Compact Screen Size Limited Control
  • 18.
  • 19.
  • 20. Metaphors model your application’s objects and actions on objects and actions in the real world
  • 21.
  • 22. Aesthetic Integrity A measure of how well the appearance of your application integrates with its functions
  • 23.
  • 25. Focus on Primary Task Make it Obvious
  • 26. Focus on Primary Task Make it Obvious Minimize Input
  • 27. Focus on Primary Task Make it Obvious Minimize Input Minimize Choices
  • 28. Focus on Primary Task Make it Obvious Minimize Input Minimize Choices Immediate Feedback
  • 29.
  • 30. iPhone OS & SDK
  • 31. iPhone OS & SDK
  • 32. iPhone OS & SDK A Stack of Frameworks, High to Low
  • 33. iPhone OS & SDK
  • 34. iPhone OS & SDK UIKit Address Book UI copy & paste, UI controls, touch & motion handling, graphics & windowing, app management, foundation, accelerometers stats, camera control, photo library, Push Notifications sensors stats... Game Kit Message UI Map Kit
  • 35. iPhone OS & SDK
  • 36. iPhone OS & SDK Quartz (2d vector) Core Audio Core Animation OpenAL OpenGL ES Media Player Framework
  • 37. iPhone OS & SDK
  • 38. iPhone OS & SDK Core Data Store Kit Core Foundation SQLite Core Location XML Support
  • 39. iPhone OS & SDK
  • 40. iPhone OS & SDK CFNetwork Accessory Support Security Threading File Access Memory Management
  • 41. UI components and Frameworks Navigation/Tool Bars, Tab Bars, iPod library Network Connectivity
  • 42. UI components and Frameworks TableViews, Core Data, sqlite
  • 43. UI components and Frameworks Text Views, Emails, Mapkit, GPS Network Connectivity
  • 44. Rolling your own UI components?
  • 45.
  • 47. Xcode
  • 48. Xcode
  • 49. Xcode
  • 53. Objective-C Founded in 86, licensed by NeXT in 88 Superset of C with OO features Polymorphism, inheritance, class, interface
  • 54.
  • 55. send messages to object instances to call a method Properties and Synthesize
  • 56. Memory Management Cocoa relies on reference counting No automatic Garbage Collection on iPhone OS
  • 58. First App A UIWindow with a UILabel, without Interface Builder
  • 59. First App A UIWindow with a UILabel, without Interface Builder
  • 60. First App A UIWindow with a UILabel, without Interface Builder
  • 61. First App Fire up Xcode
  • 62. First App Initiates your app in the App Delegate class
  • 64. AppDelegate.m “Don’t Call Me, I’ll Call You.” the iPhone OS is in control of our app
  • 66. Second App A UIWindow with two UIImages: one local, one web
  • 67. Second App A UIWindow with two UIImages: one local, one web
  • 68. Demo
  • 69. Second App A UIWindow with two UIImages: one local, one web
  • 70. Second App Same gig, different acts
  • 73. Third App Orientation Changes + Motion Detection + Animation
  • 74. Demo
  • 75. Third App Orientation Changes + Motion Detection + Animation
  • 76. Third App App Delegate class made simple
  • 77. Third App Display logic in View Controller class
  • 78. Third App Handling Orientation Changes in View Controller class
  • 79. Third App Shuffle Images upon Shake in View Controller class
  • 80. Fourth App: a simple game UIButtons + NSTimer + Animation
  • 81. Count Up Timer Life Meter Player Guard Buttons
  • 82. Demo
  • 83. Count Up Timer Life Meter Player Guard Buttons
  • 84. Life Meter GameAppDelegate Player (void)applicationDidFinishLaunching: (UIApp*)app LifeMeter Convict : UIImageView UILabel *lifeLabel; NSInteger horizontalPosition; UIImageView *life1SymbolImageView; UIImage *convictImage; UIImageView *life2SymbolImageView; BOOL isBeingHit; UIImageView *life3SymbolImageView; NSTimer *paralyzedTimer; UIImageView *life4SymbolImageView; - (void) startCrawling; UIImageView *life5SymbolImageView; - (void) gotHit; NSInteger numberOfLivesLeft; - (void) goDie; - (id) initWithFrame:(CGRect)aRect; - (void) reduceLifeMeterByOne; - (void) recoveredFromHit:(NSString *)animationID - (void) reduceLifeMeterByOneAnimationDone: finished:(NSNumber *) finished context:(void *) (NSString *)animationID finished:(NSNumber *) context; finished context:(void *) context; GameViewController UIImageView *bottomPanel UIButton *firstButton UIButton *secondButton UIButton *thirdButton Convict *convict Guard *guard Buttons LifeMeter *lifeMeter Guard TimerClock *timerClockView - (void) initControls - (void) initConvict Guard TimerClock - (void) initGuard UILabel *clockLabel UIImage *guardImage NSDate* currentDate UIImageView *nozzleFireImageView CGFloat secondsElapsed UILabel *nowLoadingLabel NSTimer *updateLabelTimer BOOL gunIsAiming -(void)updateLabel: (NSTimer*) updateLabelTimer BOOL gunIsFiring -(void)stopTimer; BOOL isFinalShot NSTimer *startsAimingTimer NSTimer *startsReloadingTimer CFURLRef soundFileURLRef SystemSoundID soundFileObject Count Up Timer - (id) init; - (void) startsAiming; - (void) startsReloading; - (void) startsFiring; - (void) finalShot; - (void) restNow; - (void) firingStopped:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context;
  • 85. GameViewController Guard UIImage *guardImage UIImageView *bottomPanel UIImageView *nozzleFireImageView UIButton *firstButton UILabel *nowLoadingLabel UIButton *secondButton BOOL gunIsAiming BOOL gunIsFiring UIButton *thirdButton BOOL isFinalShot Convict *convict NSTimer *startsAimingTimer Guard *guard NSTimer *startsReloadingTimer LifeMeter *lifeMeter CFURLRef soundFileURLRef SystemSoundID soundFileObject TimerClock *timerClockView - (id) init; - (void) initControls - (void) startsAiming; - (void) initConvict - (void) startsReloading; - (void) initGuard - (void) startsFiring; - (void) finalShot; - (void) restNow; - (void) firingStopped:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context;
  • 86. GameViewController Guard UIImage *guardImage UIImageView *bottomPanel UIImageView *nozzleFireImageView UIButton *firstButton UILabel *nowLoadingLabel UIButton *secondButton BOOL gunIsAiming BOOL gunIsFiring UIButton *thirdButton BOOL isFinalShot Convict *convict NSTimer *startsAimingTimer Guard *guard NSTimer *startsReloadingTimer LifeMeter *lifeMeter CFURLRef soundFileURLRef SystemSoundID soundFileObject TimerClock *timerClockView - (id) init; - (void) initControls - (void) startsAiming; - (void) initConvict - (void) startsReloading; - (void) initGuard - (void) startsFiring; - (void) finalShot; - (void) restNow; - (void) firingStopped:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context;
  • 87. GameViewController Guard UIImage *guardImage UIImageView *bottomPanel UIImageView *nozzleFireImageView UIButton *firstButton UILabel *nowLoadingLabel UIButton *secondButton BOOL gunIsAiming BOOL gunIsFiring UIButton *thirdButton BOOL isFinalShot Convict *convict NSTimer *startsAimingTimer Guard *guard NSTimer *startsReloadingTimer LifeMeter *lifeMeter CFURLRef soundFileURLRef SystemSoundID soundFileObject TimerClock *timerClockView - (id) init; - (void) initControls - (void) startsAiming; - (void) initConvict - (void) startsReloading; - (void) initGuard - (void) startsFiring; - (void) finalShot; - (void) restNow; - (void) firingStopped:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context;
  • 88. GameViewController Convict : UIImageView UIImageView *bottomPanel NSInteger horizontalPosition; UIButton *firstButton UIImage *convictImage; UIButton *secondButton BOOL isBeingHit; UIButton *thirdButton NSTimer *paralyzedTimer; Convict *convict - (void) startCrawling; Guard *guard - (void) gotHit; LifeMeter *lifeMeter - (void) goDie; TimerClock *timerClockView - (id) initWithFrame:(CGRect)aRect; - (void) initControls - (void) recoveredFromHit:(NSString *)animationID - (void) initConvict finished:(NSNumber *) finished context:(void *) - (void) initGuard context;
  • 89. Guard UIImage *guardImage UIImageView *nozzleFireImageView UILabel *nowLoadingLabel BOOL gunIsAiming BOOL gunIsFiring BOOL isFinalShot NSTimer *startsAimingTimer NSTimer *startsReloadingTimer CFURLRef soundFileURLRef SystemSoundID soundFileObject - (id) init; - (void) startsAiming; - (void) startsReloading; - (void) startsFiring; - (void) finalShot; - (void) restNow; - (void) firingStopped:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context;