SlideShare a Scribd company logo
+




    Software Development Community
    Mobile Device Programming Subgroup
    Hello World Series – Part I - IOS

               Paul Hancock - 29 April 2012
+
    Agenda

       What do you need to get started?

       Objective C explained in 30 seconds

       Target Considerations: iPad vs. iPhone vs. Universal

       Hello World! … take I
           Adding graphical elements to the main window programmatically


       Hello World! … take II
           Building graphical elements to the main window using WYSIWYG “Interface Builder”


       Hello World! … take III
           Adding graphical elements onto subviews


       Not covered in this presentation:
           Design patterns and concepts required to create non-trivial applications (Delegation, Notifications, Core
            Data, Storyboards, etc.)
           Getting your app on the AppStore and becoming rich
+
    What you’ll need to get started

             Intel-based Mac running OSX

             Development Environment

             Basic knowledge of object oriented programming
              concepts

             Familiarity with event-driven programming models

             Can spell MVC (Model-View-Controller)

             15 minutes of spare time
+
    Development Environment
       IOS SDK / Xcode running on Mac OSX
           Available from the AppStore for Free
           Everything you need, including iPhone/iPad simulators

       Optional:
           IOS Devices
           Developer’s License ($99/year)
               Developer certificate allows signing applications
               Allows developer to download/test/debug apps on actual IOS
                devices
               Provides access to developer resources (help, etc.)
               Allows developer to put app on appstore and get rich
+
    Model-View-Controller

       Every IOS application object should be one of these


           Model Object
             Contains data without any knowledge of the application logic or GUI


           View Object
             Interfaces to the user (buttons, scroll bars, etc.) without any knowledge of how
              the data is organized

           Controller Object
             Manages the application logic. Has knowledge of the Model objects and the
              View objects. Acts as the glue to keeps Model objects and View objects in
              sync.
             Least reusable classes
+
    MVC Design Pattern


                         Sends Message                        Update Data




            View                          Controller                               Model




                        Update the View                Fetch Data needed by View




     Controllers don’t tell Views what to display. Views ask Controllers for what they need
+
    Objective C in 30 seconds
       A very simple language, like C

       Superset of C
           Entry point is main();
           originally implemented as C preprocessor (as was C++)
           Objective C keywords begin with “@”, for example @synthesize

       Adds object-oriented paradigms
           Classes / Objects / Encapsulation / Inheritance / Polymorphism / etc.
           Allows only single inheritance (subclasses have exactly one superclass)
             All objects ultimately derived from NSObject (“NS” stands for Next Step)


       Cocoa Touch Framework (not part of Objective C)
           Rich set of frameworks/libraries to enable rapid and consistent development of IOS applications

       Further Reading:
           Programming in Objective-C (4th Edition) - Stephen G. Kochan
           Objective-C Programming: The Big Nerd Ranch Guide – Aaron Hillegass
+
    Objective C - Object/Method Notation
    Object Method Definition within a Class Implementation

    -(float)calculateAreaOfRectangleWithWidth:(float)x
                                    andHeight:(float)y
    {
        return x*y;
    }


    Method Invocation by an object

               …you might be expecting something like….
     float area;
     area = myObject->calculateAreaOfRectangle(23.7,12.0);
+
    Objective C - Object/Method Notation
    Object Method Definition within a Class Implementation

    -(float)calculateAreaOfRectangleWithWidth:(float)x
                                    andHeight:(float)y
    {
        return x*y;
    }



But no, you do it by sending a message to the object …I mean the receiver….

    float area;
    area = [myObject calculateAreaOfRectangleWithWidth:23.7
                                             andHeight:12.0];

                                                                      Arguments
    Receiver             Selector “calculateAreaOfRectangleWithWidth:andHeight:”
+
    Application Target Considerations
    iPhone? iPhone Retna? iPad? The New iPad?

    Device                           Screen                Graphics
                                     Resolution            Resolution
    iPhone 3Gs and earlier           320x480 pixels
                                                           320 x 480 points
    iPhone 4 and 4s (Retna)          640x960 pixels
    iPad and iPad 2                  768x1024 pixels
                                                           768 x 1024 points
    The New iPad (Retna)             1536x2048 pixels

       iPhone applications will run unmodified on iPads, but potentially with
        degraded (pixelated) appearance (not recommended)
       CoreGraphics based on points, not pixels – vector graphics not impacted
       Xcode allows multiple images to be bundled as resources so that they appear
        sharp on all displays
+
    Real Estate Considerations
   iPhone vs iPad
       Vastly different screen real estate calls for different approach
       iPhones use UINavigationController as the primary drill-down mechanism
       iPads can leverage greater real estate and use UISplitViewController




                                       vs.




    UINavigationController

                                                       UISplitViewController
+
    Additional Resources

       iOS Programming: The Big Nerd Ranch Guide (3rd Edition)
           Aaron Hillegass & Joe Conway
           Very structured and well written explanation of Cocoa architecture and
            approach

       iPad iOS 5 Development Essentials or iPhone iOS 5 Development
        Essentials
           Neil Smyth
           Best how-to guides from soup to nuts for getting an application onto the
            AppStore

       iOS 5 Programming Pushing the Limits: Developing Extraordinary
        Mobile Apps for Apple iPhone, iPad, and iPod Touch
           Rob Napier
           Not a beginner book
And Now….

Let’s fire up Xcode and write some apps!
+
    Hello World 1
    Implementation Summary
       Programmatic approach (no WYSIWYG)

       Created “Empty” project
           AppDelegate Class
           Instantiates the window

       Added Application icons

       Modified AppDelegate to
           Change window background color
           Created a UIButton (declared in .h and initialized in .m)
           Set the size and position of the button
           Set the title to “Press Me”
           Set the action for pressing the button to call sayHello:
+
    Hello World 2
    Implementation Summary
       Implement the main window graphically with Interface Builder

       Created “Empty” project
           AppDelegate Class
           Instantiates the window


       Added application icons

       Modified AppDelegate to
           Comment out the programmatic instantiation of the window
           Declare helloButton (using keyword IBOutlet), declare/implement sayHello action (using keyword IBAction)


       Created a new project file (IOS Interface->Window)
           Created MainWindow.xib
               Added object (cube icon), set class to HelloWorld2AppDelegate (acts as a placeholder until runtime)
               Changed background color, added button, set the title to “Press Me” with 46pt font
           Graphically make connections
               Set File’s Owner Class to UIApplication, set File’s Owner Delegate to HelloWorld2AppDelegate
               Connect helloButton (in AppDelegate) to graphical button object, connect touch up inside action to sayHello (in AppDelegate)


       Set Application Main Interface to MainWindow
+
    Hello World 3
    Implementation Summary
       Implement graphical objects in a view, with a dedicated ViewController rather than
        directly on window

       Created “Single View Application” project
           AppDelegate Class
           ViewController Class
           XIB
           Basic connections made for you

       Added application icons

       Modified ViewController to
           Declare helloButton (using keyword IBOutlet), declare/implement sayHello action (using
            keyword IBAction)

       Edit xib
           Set background color, added button, set the title to “Press Me” with 46pt font
           Connect helloButton (in File’s Owner) to graphical button object, connect touch up inside
            action to sayHello (in File’s Owner)

More Related Content

What's hot (14)

PPT
Beginning Native Android Apps
Gil Irizarry
 
PDF
Swift
Larry Ball
 
PPTX
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Gil Irizarry
 
PPTX
Android deep dive
AnuSahniNCI
 
PPT
Android
Jesus_Aguirre
 
PPT
Android tutorial
katayoon_bz
 
PPT
Android tutorial
Techacademy Software
 
PPT
Android tutorial
Ed Zel
 
PDF
Android Development: Build Android App from Scratch
Taufan Erfiyanto
 
KEY
Titanium appcelerator sdk
Alessio Ricco
 
PPT
Android tutorial
Avinash Nandakumar
 
ZIP
iPhone/iPad Development with Titanium
Axway Appcelerator
 
PDF
Best react native animation libraries & ui component of 2022
Katy Slemon
 
KEY
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Jeff Haynie
 
Beginning Native Android Apps
Gil Irizarry
 
Swift
Larry Ball
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Gil Irizarry
 
Android deep dive
AnuSahniNCI
 
Android
Jesus_Aguirre
 
Android tutorial
katayoon_bz
 
Android tutorial
Techacademy Software
 
Android tutorial
Ed Zel
 
Android Development: Build Android App from Scratch
Taufan Erfiyanto
 
Titanium appcelerator sdk
Alessio Ricco
 
Android tutorial
Avinash Nandakumar
 
iPhone/iPad Development with Titanium
Axway Appcelerator
 
Best react native animation libraries & ui component of 2022
Katy Slemon
 
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Jeff Haynie
 

Viewers also liked (20)

PPTX
8 uji normalitas data
Mukhamad Fathoni
 
PDF
Welcome to Rails Girls Buenos Aires
Anni Rautio
 
PDF
Ref IT
hans_groenbech
 
PDF
Informe empleados
kode99
 
PDF
2013 04 15 hogans assessment results luca cococcia VALUES
lucacococcia
 
PDF
Дастер
Al Maks
 
PPTX
New Models of Content Creation and Scholarship at the Intersection of Library...
Mike Nutt
 
PPT
Business Writing Instant Quiz
brainpowertraining
 
PDF
Iab social media_infographic
Nadya Rosalia
 
PDF
The srimad bhagavad sacredness of cow
BASKARAN P
 
PDF
Russian and Ukrainian banks activities in social media analytic review
SPN Communications Ukraine
 
PPT
Untrash summit presentation 1
scswa
 
PPT
Sandy. unsung heroes of hurricane. lyceum 3
Irina Saranceva
 
PPTX
miss the forest: bringing together multiple taxonomies
Heimo Rainer
 
PPTX
Final presentation
Ana Arballo
 
PPTX
Confidentiality training
baileesna
 
DOCX
Creating executable JAR from Eclipse IDE
Nag Arvind Gudiseva
 
PPTX
PPT BS
Md. Niazur Rahman
 
PPT
Question 4- Cryotherapy
Kelly Tay
 
PPT
Tceq 2011
scswa
 
8 uji normalitas data
Mukhamad Fathoni
 
Welcome to Rails Girls Buenos Aires
Anni Rautio
 
Informe empleados
kode99
 
2013 04 15 hogans assessment results luca cococcia VALUES
lucacococcia
 
Дастер
Al Maks
 
New Models of Content Creation and Scholarship at the Intersection of Library...
Mike Nutt
 
Business Writing Instant Quiz
brainpowertraining
 
Iab social media_infographic
Nadya Rosalia
 
The srimad bhagavad sacredness of cow
BASKARAN P
 
Russian and Ukrainian banks activities in social media analytic review
SPN Communications Ukraine
 
Untrash summit presentation 1
scswa
 
Sandy. unsung heroes of hurricane. lyceum 3
Irina Saranceva
 
miss the forest: bringing together multiple taxonomies
Heimo Rainer
 
Final presentation
Ana Arballo
 
Confidentiality training
baileesna
 
Creating executable JAR from Eclipse IDE
Nag Arvind Gudiseva
 
Question 4- Cryotherapy
Kelly Tay
 
Tceq 2011
scswa
 
Ad

Similar to Hello world ios v1 (20)

PPTX
Code camp 2011 Getting Started with IOS, Una Daly
Una Daly
 
PPT
Training in iOS Development
Arcadian Learning
 
PDF
iOS Development Survival Guide for the .NET Guy
Nick Landry
 
PDF
iPhone SDK dev sharing - the very basics
kenshin03
 
PDF
201010 SPLASH Tutorial
Javier Gonzalez-Sanchez
 
PPT
iPhone application development training day 1
Shyamala Prayaga
 
PDF
Basic Introduction Flutter Framework.pdf
PhanithLIM
 
PDF
Introduction of Xcode
Dhaval Kaneria
 
PPTX
New to native? Getting Started With iOS Development
Geoffrey Goetz
 
PDF
ID-ObjectiveConference 2012 - Introduction to iOS Development
Andri Yadi
 
PDF
iOS App Development with Storyboard
Babul Mirdha
 
PDF
iOS Development - Offline Class for Jasakomer
Andri Yadi
 
PDF
Test Bank for Java How to Program Late Objects 10th Edition Deitel 0132575655...
qkqwaexc7911
 
DOCX
Vb lecture
alldesign
 
DOC
iPhone Developer_ankush
ankush Ankush
 
PDF
Test Bank for Java How to Program Late Objects 10th Edition Deitel 0132575655...
giloulaiz
 
PDF
Mobile App Institute
Bill Bellows
 
KEY
Flash Builder and Flex Future - Multiscreen Development
Ryan Stewart
 
PPTX
Lecture1
redwan1795
 
KEY
Introduction to Flex Hero for Mobile Devices
Ryan Stewart
 
Code camp 2011 Getting Started with IOS, Una Daly
Una Daly
 
Training in iOS Development
Arcadian Learning
 
iOS Development Survival Guide for the .NET Guy
Nick Landry
 
iPhone SDK dev sharing - the very basics
kenshin03
 
201010 SPLASH Tutorial
Javier Gonzalez-Sanchez
 
iPhone application development training day 1
Shyamala Prayaga
 
Basic Introduction Flutter Framework.pdf
PhanithLIM
 
Introduction of Xcode
Dhaval Kaneria
 
New to native? Getting Started With iOS Development
Geoffrey Goetz
 
ID-ObjectiveConference 2012 - Introduction to iOS Development
Andri Yadi
 
iOS App Development with Storyboard
Babul Mirdha
 
iOS Development - Offline Class for Jasakomer
Andri Yadi
 
Test Bank for Java How to Program Late Objects 10th Edition Deitel 0132575655...
qkqwaexc7911
 
Vb lecture
alldesign
 
iPhone Developer_ankush
ankush Ankush
 
Test Bank for Java How to Program Late Objects 10th Edition Deitel 0132575655...
giloulaiz
 
Mobile App Institute
Bill Bellows
 
Flash Builder and Flex Future - Multiscreen Development
Ryan Stewart
 
Lecture1
redwan1795
 
Introduction to Flex Hero for Mobile Devices
Ryan Stewart
 
Ad

Recently uploaded (20)

PPTX
Lecture 5 - Agentic AI and model context protocol.pptx
Dr. LAM Yat-fai (林日辉)
 
PDF
Generative AI in Healthcare: Benefits, Use Cases & Challenges
Lily Clark
 
PPTX
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
PPTX
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
ShapeBlue
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
PDF
CIFDAQ'S Token Spotlight for 16th July 2025 - ALGORAND
CIFDAQ
 
PDF
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PPTX
Top Managed Service Providers in Los Angeles
Captain IT
 
PPTX
Machine Learning Benefits Across Industries
SynapseIndia
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PDF
Novus-Safe Pro: Brochure-What is Novus Safe Pro?.pdf
Novus Hi-Tech
 
PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PDF
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PPTX
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
PPTX
UI5Con 2025 - Beyond UI5 Controls with the Rise of Web Components
Wouter Lemaire
 
Lecture 5 - Agentic AI and model context protocol.pptx
Dr. LAM Yat-fai (林日辉)
 
Generative AI in Healthcare: Benefits, Use Cases & Challenges
Lily Clark
 
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
ShapeBlue
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
CIFDAQ'S Token Spotlight for 16th July 2025 - ALGORAND
CIFDAQ
 
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
Top Managed Service Providers in Los Angeles
Captain IT
 
Machine Learning Benefits Across Industries
SynapseIndia
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Novus-Safe Pro: Brochure-What is Novus Safe Pro?.pdf
Novus Hi-Tech
 
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
UI5Con 2025 - Beyond UI5 Controls with the Rise of Web Components
Wouter Lemaire
 

Hello world ios v1

  • 1. + Software Development Community Mobile Device Programming Subgroup Hello World Series – Part I - IOS Paul Hancock - 29 April 2012
  • 2. + Agenda  What do you need to get started?  Objective C explained in 30 seconds  Target Considerations: iPad vs. iPhone vs. Universal  Hello World! … take I  Adding graphical elements to the main window programmatically  Hello World! … take II  Building graphical elements to the main window using WYSIWYG “Interface Builder”  Hello World! … take III  Adding graphical elements onto subviews  Not covered in this presentation:  Design patterns and concepts required to create non-trivial applications (Delegation, Notifications, Core Data, Storyboards, etc.)  Getting your app on the AppStore and becoming rich
  • 3. + What you’ll need to get started  Intel-based Mac running OSX  Development Environment  Basic knowledge of object oriented programming concepts  Familiarity with event-driven programming models  Can spell MVC (Model-View-Controller)  15 minutes of spare time
  • 4. + Development Environment  IOS SDK / Xcode running on Mac OSX  Available from the AppStore for Free  Everything you need, including iPhone/iPad simulators  Optional:  IOS Devices  Developer’s License ($99/year)  Developer certificate allows signing applications  Allows developer to download/test/debug apps on actual IOS devices  Provides access to developer resources (help, etc.)  Allows developer to put app on appstore and get rich
  • 5. + Model-View-Controller  Every IOS application object should be one of these  Model Object  Contains data without any knowledge of the application logic or GUI  View Object  Interfaces to the user (buttons, scroll bars, etc.) without any knowledge of how the data is organized  Controller Object  Manages the application logic. Has knowledge of the Model objects and the View objects. Acts as the glue to keeps Model objects and View objects in sync.  Least reusable classes
  • 6. + MVC Design Pattern Sends Message Update Data View Controller Model Update the View Fetch Data needed by View Controllers don’t tell Views what to display. Views ask Controllers for what they need
  • 7. + Objective C in 30 seconds  A very simple language, like C  Superset of C  Entry point is main();  originally implemented as C preprocessor (as was C++)  Objective C keywords begin with “@”, for example @synthesize  Adds object-oriented paradigms  Classes / Objects / Encapsulation / Inheritance / Polymorphism / etc.  Allows only single inheritance (subclasses have exactly one superclass)  All objects ultimately derived from NSObject (“NS” stands for Next Step)  Cocoa Touch Framework (not part of Objective C)  Rich set of frameworks/libraries to enable rapid and consistent development of IOS applications  Further Reading:  Programming in Objective-C (4th Edition) - Stephen G. Kochan  Objective-C Programming: The Big Nerd Ranch Guide – Aaron Hillegass
  • 8. + Objective C - Object/Method Notation Object Method Definition within a Class Implementation -(float)calculateAreaOfRectangleWithWidth:(float)x andHeight:(float)y { return x*y; } Method Invocation by an object …you might be expecting something like…. float area; area = myObject->calculateAreaOfRectangle(23.7,12.0);
  • 9. + Objective C - Object/Method Notation Object Method Definition within a Class Implementation -(float)calculateAreaOfRectangleWithWidth:(float)x andHeight:(float)y { return x*y; } But no, you do it by sending a message to the object …I mean the receiver…. float area; area = [myObject calculateAreaOfRectangleWithWidth:23.7 andHeight:12.0]; Arguments Receiver Selector “calculateAreaOfRectangleWithWidth:andHeight:”
  • 10. + Application Target Considerations iPhone? iPhone Retna? iPad? The New iPad? Device Screen Graphics Resolution Resolution iPhone 3Gs and earlier 320x480 pixels 320 x 480 points iPhone 4 and 4s (Retna) 640x960 pixels iPad and iPad 2 768x1024 pixels 768 x 1024 points The New iPad (Retna) 1536x2048 pixels  iPhone applications will run unmodified on iPads, but potentially with degraded (pixelated) appearance (not recommended)  CoreGraphics based on points, not pixels – vector graphics not impacted  Xcode allows multiple images to be bundled as resources so that they appear sharp on all displays
  • 11. + Real Estate Considerations  iPhone vs iPad  Vastly different screen real estate calls for different approach  iPhones use UINavigationController as the primary drill-down mechanism  iPads can leverage greater real estate and use UISplitViewController vs. UINavigationController UISplitViewController
  • 12. + Additional Resources  iOS Programming: The Big Nerd Ranch Guide (3rd Edition)  Aaron Hillegass & Joe Conway  Very structured and well written explanation of Cocoa architecture and approach  iPad iOS 5 Development Essentials or iPhone iOS 5 Development Essentials  Neil Smyth  Best how-to guides from soup to nuts for getting an application onto the AppStore  iOS 5 Programming Pushing the Limits: Developing Extraordinary Mobile Apps for Apple iPhone, iPad, and iPod Touch  Rob Napier  Not a beginner book
  • 13. And Now…. Let’s fire up Xcode and write some apps!
  • 14. + Hello World 1 Implementation Summary  Programmatic approach (no WYSIWYG)  Created “Empty” project  AppDelegate Class  Instantiates the window  Added Application icons  Modified AppDelegate to  Change window background color  Created a UIButton (declared in .h and initialized in .m)  Set the size and position of the button  Set the title to “Press Me”  Set the action for pressing the button to call sayHello:
  • 15. + Hello World 2 Implementation Summary  Implement the main window graphically with Interface Builder  Created “Empty” project  AppDelegate Class  Instantiates the window  Added application icons  Modified AppDelegate to  Comment out the programmatic instantiation of the window  Declare helloButton (using keyword IBOutlet), declare/implement sayHello action (using keyword IBAction)  Created a new project file (IOS Interface->Window)  Created MainWindow.xib  Added object (cube icon), set class to HelloWorld2AppDelegate (acts as a placeholder until runtime)  Changed background color, added button, set the title to “Press Me” with 46pt font  Graphically make connections  Set File’s Owner Class to UIApplication, set File’s Owner Delegate to HelloWorld2AppDelegate  Connect helloButton (in AppDelegate) to graphical button object, connect touch up inside action to sayHello (in AppDelegate)  Set Application Main Interface to MainWindow
  • 16. + Hello World 3 Implementation Summary  Implement graphical objects in a view, with a dedicated ViewController rather than directly on window  Created “Single View Application” project  AppDelegate Class  ViewController Class  XIB  Basic connections made for you  Added application icons  Modified ViewController to  Declare helloButton (using keyword IBOutlet), declare/implement sayHello action (using keyword IBAction)  Edit xib  Set background color, added button, set the title to “Press Me” with 46pt font  Connect helloButton (in File’s Owner) to graphical button object, connect touch up inside action to sayHello (in File’s Owner)