SlideShare a Scribd company logo
iOS App Development
                           Lecture 1 - Introduction




Thursday 26 July 12
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
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
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
Evaluation


                      • Homework: 20%
                      • Project: 30%


Thursday 26 July 12
Homework


                      1. Create “Your first iOS application” & demo
                         to me: 2.5%
                      2. Write ImageProcessing Application: 17.5%




Thursday 26 July 12
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
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
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
When / Where did it all
                        start?


Thursday 26 July 12
iOS Architecture



Thursday 26 July 12
OS X Architecture




           Picture from
            Wikipedia



Thursday 26 July 12
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
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
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
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
Model View Controller

                                  Controller




                           View                Model




Thursday 26 July 12
A different view




Thursday 26 July 12
Development Stack — Tools




                                Text




                                            Images from Apple
Thursday 26 July 12
Development Stack — Frameworks
                Development Stack — Frameworks



    Foundation Address Book                Map Kit     Core Data




                      UI Kit   Core Animation        OpenGL

                                 Many Others...


Thursday 26 July 12
Development Stack — Language &
               Development Stack — Language & Runtime
               Runtime




                              Objective-C




Thursday 26 July 12
Hello World in
                      Objective-C & Xcode


Thursday 26 July 12
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
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
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
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
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

More Related Content

PDF
Drupal and-flex-drupal camp
PDF
Domain Analysis & Data Modeling
PDF
OpenStack meetup, March2013 keynote
PDF
Avalon Media System Community Update Webinar
PPTX
Websphere Application Server: Much more than Open Source
PDF
Android for Java Developers
PDF
Kaa shiv ieee2012topics
PDF
Android for Java Developers at OSCON 2010
Drupal and-flex-drupal camp
Domain Analysis & Data Modeling
OpenStack meetup, March2013 keynote
Avalon Media System Community Update Webinar
Websphere Application Server: Much more than Open Source
Android for Java Developers
Kaa shiv ieee2012topics
Android for Java Developers at OSCON 2010

What's hot (16)

PDF
Android Deep Dive
PDF
Updating Your Website to Drupal 7
PDF
2009 CTSA Profiles OpenSocial Poster
DOC
Keat Resume 2012b
PDF
Duncan hallas netbiscuits mobile publishing masterclass
PDF
Squeeze more juice from jenkins
PDF
EclipseCon2010 - Painless Metamodel Evolution
PPT
Android For Java Developers
PDF
Open Android
PDF
Android For Managers Slides
PDF
Network Infrastructure for Academic IC CAD Environments
PDF
PDF
EclipseConEurope2012 SOA - Models As Operational Documentation
PDF
6 28-12
PDF
Android Internals
PDF
Staying ahead of the multi-core revolution with CDT debug
Android Deep Dive
Updating Your Website to Drupal 7
2009 CTSA Profiles OpenSocial Poster
Keat Resume 2012b
Duncan hallas netbiscuits mobile publishing masterclass
Squeeze more juice from jenkins
EclipseCon2010 - Painless Metamodel Evolution
Android For Java Developers
Open Android
Android For Managers Slides
Network Infrastructure for Academic IC CAD Environments
EclipseConEurope2012 SOA - Models As Operational Documentation
6 28-12
Android Internals
Staying ahead of the multi-core revolution with CDT debug
Ad

Similar to Ios part1 (20)

PPTX
Lecture1
PPTX
iOS platform
PDF
iOS Architecture and MVC
PDF
Cocoa fundamentalswert
PPTX
xCode presentation
PDF
Developing Applications on iOS
PPTX
Apple iOS
PDF
Apple iOS Report
KEY
I os dev_insights
PPTX
Course overview 1
PDF
iOS Development Seminar Keynote
PDF
I phone ipad-course-content
PDF
201010 SPLASH Tutorial
KEY
iPhone/iPad开发讲座 第一讲 Ios开发简介
PDF
13986149 c-pgming-for-embedded-systems
KEY
iPhone OS: The Next Killer Platform
PDF
MSR iOS Tranining
PDF
iPhone App Dev Overview - Mobile Dev Camp Vietnam 1
PDF
iOS Development. Some practices.
PDF
Citibank
Lecture1
iOS platform
iOS Architecture and MVC
Cocoa fundamentalswert
xCode presentation
Developing Applications on iOS
Apple iOS
Apple iOS Report
I os dev_insights
Course overview 1
iOS Development Seminar Keynote
I phone ipad-course-content
201010 SPLASH Tutorial
iPhone/iPad开发讲座 第一讲 Ios开发简介
13986149 c-pgming-for-embedded-systems
iPhone OS: The Next Killer Platform
MSR iOS Tranining
iPhone App Dev Overview - Mobile Dev Camp Vietnam 1
iOS Development. Some practices.
Citibank
Ad

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Cloud computing and distributed systems.
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
KodekX | Application Modernization Development
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Diabetes mellitus diagnosis method based random forest with bat algorithm
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Unlocking AI with Model Context Protocol (MCP)
Cloud computing and distributed systems.
Chapter 3 Spatial Domain Image Processing.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
sap open course for s4hana steps from ECC to s4
Building Integrated photovoltaic BIPV_UPV.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Review of recent advances in non-invasive hemoglobin estimation
KodekX | Application Modernization Development
Big Data Technologies - Introduction.pptx
Advanced methodologies resolving dimensionality complications for autism neur...

Ios part1

  • 1. iOS App Development Lecture 1 - Introduction Thursday 26 July 12
  • 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
  • 5. Evaluation • Homework: 20% • Project: 30% Thursday 26 July 12
  • 6. Homework 1. Create “Your first iOS application” & demo to me: 2.5% 2. Write ImageProcessing Application: 17.5% 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
  • 12. OS X Architecture Picture from Wikipedia 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
  • 17. Model View Controller Controller View Model Thursday 26 July 12
  • 19. Development Stack — Tools Text Images from Apple 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
  • 22. Hello World in Objective-C & Xcode 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