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
Ad

More Related Content

What's hot (16)

Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
Marko Gargenta
Ā 
Updating Your Website to Drupal 7
Updating Your Website to Drupal 7Updating Your Website to Drupal 7
Updating Your Website to Drupal 7
Acquia
Ā 
2009 CTSA Profiles OpenSocial Poster
2009 CTSA Profiles OpenSocial Poster2009 CTSA Profiles OpenSocial Poster
2009 CTSA Profiles OpenSocial Poster
ericmeeks
Ā 
Keat Resume 2012b
Keat Resume 2012bKeat Resume 2012b
Keat Resume 2012b
mkeating1
Ā 
Duncan hallas netbiscuits mobile publishing masterclass
Duncan hallas netbiscuits mobile publishing masterclassDuncan hallas netbiscuits mobile publishing masterclass
Duncan hallas netbiscuits mobile publishing masterclass
James Cameron
Ā 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkins
CloudBees
Ā 
EclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionEclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel Evolution
Marc Dutoo
Ā 
Android For Java Developers
Android For Java DevelopersAndroid For Java Developers
Android For Java Developers
Mike Wolfson
Ā 
Open Android
Open AndroidOpen Android
Open Android
Marko Gargenta
Ā 
Android For Managers Slides
Android For Managers SlidesAndroid For Managers Slides
Android For Managers Slides
Marko Gargenta
Ā 
Network Infrastructure for Academic IC CAD Environments
Network Infrastructure for Academic IC CAD EnvironmentsNetwork Infrastructure for Academic IC CAD Environments
Network Infrastructure for Academic IC CAD Environments
thyandrecardoso
Ā 
Cold Fusion Deck
Cold Fusion DeckCold Fusion Deck
Cold Fusion Deck
Š¢Ń€Š°Š½ŃŠ»ŠøŃ€ŃƒŠµŠ¼.бел
Ā 
EclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationEclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational Documentation
Marc Dutoo
Ā 
6 28-12
6 28-126 28-12
6 28-12
srcsolutions
Ā 
Android Internals
Android InternalsAndroid Internals
Android Internals
Marko Gargenta
Ā 
Staying ahead of the multi-core revolution with CDT debug
Staying ahead of the multi-core revolution with CDT debugStaying ahead of the multi-core revolution with CDT debug
Staying ahead of the multi-core revolution with CDT debug
marckhouzam
Ā 
Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
Marko Gargenta
Ā 
Updating Your Website to Drupal 7
Updating Your Website to Drupal 7Updating Your Website to Drupal 7
Updating Your Website to Drupal 7
Acquia
Ā 
2009 CTSA Profiles OpenSocial Poster
2009 CTSA Profiles OpenSocial Poster2009 CTSA Profiles OpenSocial Poster
2009 CTSA Profiles OpenSocial Poster
ericmeeks
Ā 
Keat Resume 2012b
Keat Resume 2012bKeat Resume 2012b
Keat Resume 2012b
mkeating1
Ā 
Duncan hallas netbiscuits mobile publishing masterclass
Duncan hallas netbiscuits mobile publishing masterclassDuncan hallas netbiscuits mobile publishing masterclass
Duncan hallas netbiscuits mobile publishing masterclass
James Cameron
Ā 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkins
CloudBees
Ā 
EclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionEclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel Evolution
Marc Dutoo
Ā 
Android For Java Developers
Android For Java DevelopersAndroid For Java Developers
Android For Java Developers
Mike Wolfson
Ā 
Android For Managers Slides
Android For Managers SlidesAndroid For Managers Slides
Android For Managers Slides
Marko Gargenta
Ā 
Network Infrastructure for Academic IC CAD Environments
Network Infrastructure for Academic IC CAD EnvironmentsNetwork Infrastructure for Academic IC CAD Environments
Network Infrastructure for Academic IC CAD Environments
thyandrecardoso
Ā 
EclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationEclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational Documentation
Marc Dutoo
Ā 
Android Internals
Android InternalsAndroid Internals
Android Internals
Marko Gargenta
Ā 
Staying ahead of the multi-core revolution with CDT debug
Staying ahead of the multi-core revolution with CDT debugStaying ahead of the multi-core revolution with CDT debug
Staying ahead of the multi-core revolution with CDT debug
marckhouzam
Ā 

Similar to Ios part1 (20)

mobile technologies iOS
mobile technologies iOSmobile technologies iOS
mobile technologies iOS
chrisiegers
Ā 
OSWALD: Lessons from and for the Open Hardware Movement
OSWALD: Lessons from and for the Open Hardware MovementOSWALD: Lessons from and for the Open Hardware Movement
OSWALD: Lessons from and for the Open Hardware Movement
OSU Open Source Lab
Ā 
Apple iOS
Apple iOSApple iOS
Apple iOS
Chetan Gowda
Ā 
201010 SPLASH Tutorial
201010 SPLASH Tutorial201010 SPLASH Tutorial
201010 SPLASH Tutorial
Javier Gonzalez-Sanchez
Ā 
What is cocoa
What is cocoaWhat is cocoa
What is cocoa
Harihar Prasad Kushwaha
Ā 
Embarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentationEmbarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentation
Embarcadero Technologies
Ā 
Developing Applications on iOS
Developing Applications on iOSDeveloping Applications on iOS
Developing Applications on iOS
Francisco Ramos
Ā 
xCode presentation
xCode presentationxCode presentation
xCode presentation
Simon Zhou
Ā 
200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA200910 - iPhone at OOPSLA
200910 - iPhone at OOPSLA
Javier Gonzalez-Sanchez
Ā 
Lecture1
Lecture1Lecture1
Lecture1
redwan1795
Ā 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS Architecture
DanielSelvanD
Ā 
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
eLiberatica
Ā 
Android & IOS
Android & IOSAndroid & IOS
Android & IOS
Arpee Callejo
Ā 
Xamarin.Mac Seminar
Xamarin.Mac SeminarXamarin.Mac Seminar
Xamarin.Mac Seminar
Xamarin
Ā 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
Yoojoo Jang
Ā 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
Alexis Moussine-Pouchkine
Ā 
iOS Development Seminar Keynote
 iOS Development Seminar Keynote iOS Development Seminar Keynote
iOS Development Seminar Keynote
Amsys
Ā 
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
mollhaeuser
Ā 
Android platform
Android platformAndroid platform
Android platform
maya_slides
Ā 
Open source for you - November 2017
Open source for you - November 2017Open source for you - November 2017
Open source for you - November 2017
Heart Disk
Ā 
mobile technologies iOS
mobile technologies iOSmobile technologies iOS
mobile technologies iOS
chrisiegers
Ā 
OSWALD: Lessons from and for the Open Hardware Movement
OSWALD: Lessons from and for the Open Hardware MovementOSWALD: Lessons from and for the Open Hardware Movement
OSWALD: Lessons from and for the Open Hardware Movement
OSU Open Source Lab
Ā 
Embarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentationEmbarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentation
Embarcadero Technologies
Ā 
Developing Applications on iOS
Developing Applications on iOSDeveloping Applications on iOS
Developing Applications on iOS
Francisco Ramos
Ā 
xCode presentation
xCode presentationxCode presentation
xCode presentation
Simon Zhou
Ā 
Lecture1
Lecture1Lecture1
Lecture1
redwan1795
Ā 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS Architecture
DanielSelvanD
Ā 
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
"Open Source at Microsoft" by Zoli Herczeg @ eLiberatica 2008
eLiberatica
Ā 
Xamarin.Mac Seminar
Xamarin.Mac SeminarXamarin.Mac Seminar
Xamarin.Mac Seminar
Xamarin
Ā 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
Yoojoo Jang
Ā 
iOS Development Seminar Keynote
 iOS Development Seminar Keynote iOS Development Seminar Keynote
iOS Development Seminar Keynote
Amsys
Ā 
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
Decision Makers Crib: Mobile App Development - Analysis of common frameworks ...
mollhaeuser
Ā 
Android platform
Android platformAndroid platform
Android platform
maya_slides
Ā 
Open source for you - November 2017
Open source for you - November 2017Open source for you - November 2017
Open source for you - November 2017
Heart Disk
Ā 
Ad

Recently uploaded (20)

Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
Ā 
Cybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and MitigationCybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and Mitigation
VICTOR MAESTRE RAMIREZ
Ā 
Slack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teamsSlack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teams
Nacho Cougil
Ā 
Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?
Eric Torreborre
Ā 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
Ā 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
Ā 
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdfKit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Wonjun Hwang
Ā 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
Ā 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
Ā 
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Mike Mingos
Ā 
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
James Anderson
Ā 
Dark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanizationDark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanization
Jakub Å imek
Ā 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
Ā 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
Ā 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
Ā 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
Ā 
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
João Esperancinha
Ā 
Build With AI - In Person Session Slides.pdf
Build With AI - In Person Session Slides.pdfBuild With AI - In Person Session Slides.pdf
Build With AI - In Person Session Slides.pdf
Google Developer Group - Harare
Ā 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
Ā 
machines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdfmachines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdf
AmirStern2
Ā 
Artificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptxArtificial_Intelligence_in_Everyday_Life.pptx
Artificial_Intelligence_in_Everyday_Life.pptx
03ANMOLCHAURASIYA
Ā 
Cybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and MitigationCybersecurity Threat Vectors and Mitigation
Cybersecurity Threat Vectors and Mitigation
VICTOR MAESTRE RAMIREZ
Ā 
Slack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teamsSlack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teams
Nacho Cougil
Ā 
Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?Shoehorning dependency injection into a FP language, what does it take?
Shoehorning dependency injection into a FP language, what does it take?
Eric Torreborre
Ā 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
Ā 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
Ā 
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdfKit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Kit-Works Team Study_ķŒ€ģŠ¤ķ„°ė””_ź¹€ķ•œģ†”_nuqs_20250509.pdf
Wonjun Hwang
Ā 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
Ā 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
Ā 
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Optima Cyber - Maritime Cyber Security - MSSP Services - Manolis Sfakianakis ...
Mike Mingos
Ā 
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
GDG Cloud Southlake #42: Suresh Mathew: Autonomous Resource Optimization: How...
James Anderson
Ā 
Dark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanizationDark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanization
Jakub Å imek
Ā 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
Ā 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
Ā 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
Ā 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
Ā 
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
João Esperancinha
Ā 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
Ā 
machines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdfmachines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdf
AmirStern2
Ā 
Ad

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
  ēæ»čÆ‘ļ¼š