SlideShare une entreprise Scribd logo
1  sur  111
iPhoneNewcastle
  BCS development a brief introduction                                       pete goodliffe




                           Hello,
                           world!
                                             iPhone
                                               iOS
                                             Development
                                             a brief introduction
                                                     rkably , very
                                                 rema
                                         really,


                                                                     Pete Goodliffe
                                                                     pete@goodliffe.net
iPhone development a brief introduction                                 pete goodliffe




                                     Pete Goodliffe
                                       A programmer, a columnist,
                                       an author, a teacher. Someone
                                       who cares about code.
                                                              www.goodliffe.net
                                                           goodliffe.blogspot.com
                                                                   @petegoodliffe
iPhone development a brief introduction                                 pete goodliffe




                                     Pete Goodliffe
                                       A programmer, a columnist,
                                       an author, a teacher. Someone
                                       who cares about code.
                                                              www.goodliffe.net
                                                           goodliffe.blogspot.com
                                                                   @petegoodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction                                                           pete goodliffe




    talk synopsis
                  An introduction to iPhone/iOS development
                  An introduction to iPhone development for beginners or those who are casually
                  interested and want a leg up the learning curve.

                  This talk is an overview of how to get started as an iPhone developer, and an
                  introduction to the core technologies, including:

                   ‣   Common iPhone/Mac OS design patterns, idioms, and practices
                   ‣   Becoming a native: how to "think in iPhone"
                   ‣   Overview of the libraries and facilities that exist
                   ‣   Limitations of the development environment
iPhone development a brief introduction                pete goodliffe




                         90 minutes? is that all?!!!
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies




                    m… pie
                 Mm
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo
                                                                  Intro



      ‣ Intro


          Introduction
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction     pete goodliffe




                             who are you?
iPhone development a brief introduction     pete goodliffe




                           why develop
                          for the iPhone?
iPhone development a brief introduction    pete goodliffe




                        the alternatives
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo
                                                                  Intro



      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro


                       The tools
      ‣ The tools                           Tips                                    Tools
      ‣ The language
      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                pete goodliffe




                                 ❖        The cast ❖
                            Xcode
                   iPhone/iPod Touch/iPad
                      (Interface builder)
                       iPhone simulator
                      Instruments/Shark
                    iOS Provisioning Portal
                          Other tools
iPhone development a brief introduction           pete goodliffe




                                          Xcode
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction         pete goodliffe




                                    an iPhone
iPhone development a brief introduction   pete goodliffe




                      Interface Builder
iPhone development a brief introduction   pete goodliffe




                     iPhone simulator
iPhone development a brief introduction   pete goodliffe




                 Instruments/Shark
iPhone development a brief introduction         pete goodliffe




                                  Other tools
iPhone development a brief introduction               pete goodliffe




                        Getting set up...
                                Get a Mac
                              Get the tools
                                 Install
                           Get an ADC account   $$$
                                  Code
                                    …
                                  Profit
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips                                    Tools
      ‣ The language
      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                          pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro


      The language
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                                  Language
      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                 pete goodliffe




                     (well, languages)
                                              C
                                             C++
                                          Objective-C
iPhone development a brief introduction                 pete goodliffe




                     (well, languages)
                                              C
                                             C++
                                          Objective-C
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction                    pete goodliffe




                     a history of
                   objective-c in 14
                 lines and 12 words
                                          (give or take)
iPhone development a brief introduction                               pete goodliffe


                                             algol


                      CPL                               Simula

                    BCPL                   Smalltalk
                     B
                     C
                                          Objective-C
                                                            C++


                                                     Java    C#   D
iPhone development a brief introduction                   pete goodliffe



                           objective C is...
                                   dynamic
                         based on message passing
                        follows C compilation model
                              full of [ ] and @s

                                                       ot too
                                                      n
   - (id) thisIsAMethod:(int)param1                        ry!
              signature:(float)param2                  sca
   {
       for (int n (brace n < 10; ++n)
                   = 0; yourself)
       {
           NSLog(@”N=%d”, n);
           [object callMethod:1 thing:2];
       }
   }
iPhone development a brief introduction             pete goodliffe

                                          .m file

  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
        @class
             signature:(float)param2
  {     @interface
        @implementation
      for (int n = 0; n < 10; ++n)
      { @end
          NSLog(@”N=%d”, n);
        @property
          [object callMethod:1 thing:2];
        @private
      }
  }     @protected

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction            pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
                              C an
  {                                stil
                                        l
                                  C fr write
      for (int n = 0; n < 10; ++n)ee func (and c
                                             tion all)
      {                                          s

          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
                         NSS
          [object callMethod:1 thing:2];
                             tri
      }                          ng
  }

  @end
iPhone development a brief introduction    pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
             signature:(float)param2
  {
      for (int n = 0; n < 10; ++n)
      {
          NSLog(@”N=%d”, n);
          [object callMethod:1 thing:2];
      }
  }

  @end
iPhone development a brief introduction     pete goodliffe




  @implementation MyClass

  - (id) thisIsAMethod:(int)param1
              signature:(float)param2
  {
       for (int n = 0; n < 10; ++n)
       {
           NSLog(@”N=%d”, n);
           [object callMethod:1 thing:2];
       }                  Can
  }                           call
                                   nil
  @end
iPhone development a brief introduction                pete goodliffe



                                          Sending messages

         [object method];
 int i = [object method];
        [[object method1] method2];

                      [object method:10];
                      [object1 method:[object 2:method]];
iPhone development a brief introduction                                   pete goodliffe



                                                   Method names
                                                             parameters

         object


                  [circle setCenterAtX:110 y:675];

                                          method name

                         selector name is: setCenterAtX:y:


                                           method declared as:
     - (void) setCentreAtX:(float)x y:(float)y

            SEL s = @selector(setCenterAtX:y:);
            [circle performSelector:s];
iPhone development a brief introduction                  pete goodliffe




                    parameter types:
                             int, float, unsigned, etc
                              syntax: (return type)
                                          id
iPhone development a brief introduction             pete goodliffe
                                          .h file

  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction   pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction   pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction   pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction   pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction     pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                   otherMember;
  }
                       nda nt)
                 (redu
  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction   pete goodliffe



  @class ForwardDeclaration;

  @interface MyClass : NSObject
  {
      ForwardDeclaration *member;
      bool                otherMember;
  }

  - (id) init;
  - (id) initWithItems:(NSArray*)array
               enabled:(bool)enabled;

  + (id) myClassWithItems:(NSArray*)array;

  @end
iPhone development a brief introduction              pete goodliffe




                            Objective C++
                          In .mm files
                Classes can contain C++ objects
               May use C++ constructs in functions
                        You can use RAII
                         C++ libraries
iPhone development a brief introduction                 pete goodliffe



Properties
            @interface MyClass
            {
                 int harold;
            }
            @property (nonatomic) int harold;
            @end


        In MyClass.m...
          @interface MyClass
          @synthesize harold;
          @end
                                            This will become
                                          important when we
                                          look at creating UIs
iPhone development a brief introduction               pete goodliffe




                     The tao of objects
                         You don’t call methods
                       You pass messages to objects

            [theObject sendMessage:parameter];
iPhone development a brief introduction                                        pete goodliffe


                                                         Java, C++, C#
  object.myMethod(1066);

                                           MyClass

                                     myMethod(int)
                                                               MyClass *this
                                     another()

                                     more()
                                                          class MyClass
                                                          {
                                          private data        public myMethod(int i)
                                                              {
                                                                  // ...
                                                              }
                                                          };
iPhone development a brief introduction                                        pete goodliffe


                                                           Objective-C
  [object myMethod:1066];

                                             MyClass
           message
            (selector)
                                                              MyClass *self

                                          myMethod(int)

                                          another()
                                                            @implementation MyClass
                                                            - (void) myMethod:(int)i
                                            private data    {
                                                               // ...
                                                            }
                                                            @end
iPhone development a brief introduction     pete goodliffe



Categories

        @interface NSObject (Foo)
        - (void) extraFooMethod;
        @end



        NSArray *array = [NSArray array];
        [array extraFooMethod];
iPhone development a brief introduction                                 pete goodliffe



                                                Object lifetime
                                          All objects are reference counted
                                                               (the retain count)




 NSArray *array1 = [[NSArray alloc] init];
 NSArray *array2 = [NSArray array];

 [array1 release];
 [array2 release]; // wrong

 Circle *circle = [[Circle alloc] initAtCenterX:100
                                              y:100
                                         radius:200];
iPhone development a brief introduction                                 pete goodliffe




                                                               Retain
                                          Action               count



       obj=[[ClassType alloc] init];                             1


                                               [obj retain];     2


       [obj release];                                            1


                                              [obj release];     0

                                                      [object dealloc];
iPhone development a brief introduction                                 pete goodliffe




                                                               Retain
                                          Action               count



       obj=[[ClassType alloc] init];                             1


                                               [obj retain];     2


       [obj release];                                            1


                                              [obj release];     0

                                                      [object dealloc];
iPhone development a brief introduction                    pete goodliffe




                                          ARC
                            automatic reference counting
iPhone development a brief introduction                 pete goodliffe



                                          The usual suspects

       NSObject
       NSString
       NSArray       NSMutableArray
       NSNumber
       NSThread
       NSDictionary NSMutableDictionary
       NSApplication
       NSData        NSMutableData
       NSURL
       NSSet         NSMutableSet
       NSValue
iPhone development a brief introduction                pete goodliffe




                                          Miscellany


       Statically typed my arse
               #import
        Constructor kludgery
iPhone development a brief introduction                   pete goodliffe




                                          Idioms

                   Delegates
               Key-value coding
              Protocol (interfaces)
                                    formal and informal
iPhone development a brief introduction                                   pete goodliffe




                              The libraries
         Objective C
                                          Cocoa Touch             UIKit, etc


                                                          Core Audio, Open GL ES,
                                             Media        Quartz, Core Animation


                                          Core Services

                                            Core OS          Posix, SQLite, Core
                                                              Foundation, BSD
               C
iPhone development a brief introduction                                                          pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                                  Language
      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                    pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro


                                  The UI
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                            Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo
                                                               Technologies
                                                                                 UI
iPhone development a brief introduction   pete goodliffe




                      Interface Builder
iPhone development a brief introduction                     pete goodliffe




                                Held in .xib files
                                          (Compiled NIBs)

                    Loaded into application
                     (semi-automatically)

                IB is integrated into Xcode

                              UIKit framework
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction          pete goodliffe




                            Create UI elements

            Link to an object reference in
             the XIB through properties
                 marked as IBOutlet

                    Link actions to methods
                       defined IBAction
iPhone development a brief introduction                     pete goodliffe




                                     Storyboards




                                                   (just don’t)
iPhone development a brief introduction                                         pete goodliffe




  //
  //     ExampleAppDelegate.h
  //     Example
  //
  //     Created by Pete Goodliffe on 03/04/2010.
  //     Copyright __MyCompanyName__ 2010. All rights reserved.
  //

  #import <UIKit/UIKit.h>

  @interface ExampleAppDelegate : NSObject <UIApplicationDelegate> {

         UIWindow *window;
         UINavigationController *navigationController;
  }

  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

  @end
iPhone development a brief introduction                                                    pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                            Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo
                                                               Technologies
                                                                                 UI
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




      ‣ Intro
              Key
in 90 minutes...
      ‣ The tools
      ‣ The language
      ‣ The UI
                                            Tips
                                                   Demo         Intro




                                                                              Tools




          technologies
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI


                                                               Technologies
iPhone development a brief introduction   pete goodliffe




                        UIKit
               Core Graphics (Quartz)
                   Core Animation
                     Core Audio
              Media Core / AVFoundation
               MapKit / Core Location
                 CoreData (or sqlite)
                     OpenGL ES
                 External Accessory
iPhone development a brief introduction                    pete goodliffe




                                            iOS 1
                                          Remember that?
iPhone development a brief introduction                                    pete goodliffe




                  iOS 2                    New in iOS 3
                                          iPad (popovers, split views)
       Being able to write apps !            Gesture recognizers
                                                  Copy & paste
                                            File sharing via iTunes
                                             Supported file types
                                                External display
     New in iOS 4                                   CoreText
                                                     MMS
          Multitasking
         Blocks & GCD
          Game Center
    EventKit: Calendar access                     New in iOS 5
          In-app SMS                                   iCloud Storage
         Media access                                        ARC
           QuickLook                                       Xcode 4
               iAd                                      Storyboards
     New audio/video APIs                                 Newstand
                                                     Twitter Integration
                                                     Notification Center
                                                         Core Image
                                                      New instruments
                                                     Location Simulation
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo         Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI


                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                    Demo          Intro
      ‣ Intro


                   Deploying
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks
      ‣ The demo                                   Deploying
                                                                              UI
                                                               Technologies
iPhone development a brief introduction                                pete goodliffe




                 Deploying
            iPhone
          simulator                                    iPhone

                                                  developer account ($$$)
               free
                                                        “DRM hell”
               x86
                                                  Deployment certificates
      runs at desktop speed
                          different build targets   100 devices per year
         more memory
           network stable
                                           App
                                          store   iTunes Connect
                                                  Another build type
iPhone development a brief introduction                  pete goodliffe




                                              App
                                             store

                                            submit

                                          get rejected

                                             fix it

                                           resubmit


                                            profit
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                    Demo          Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks
      ‣ The demo                                   Deploying
                                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                             pete goodliffe




in 90 minutes...                                         Demo           Intro
      ‣ Intro


           Further info
      ‣ The tools                                Tips
      ‣ The language                                                                Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                                     Language

      ‣ Tips and tricks                                  Deploying
      ‣ The demo                                                                    UI
                                                                     Technologies
iPhone development a brief introduction                            pete goodliffe




                Xcode documentation
             developer.apple.com/iphone
                        Books
                      Websites
                                   Stack Overflow, CocoaDev, ADC

                   Videos on iTunes U
               http://itunes.stanford.edu/
iPhone development a brief introduction                                                             pete goodliffe




in 90 minutes...                                         Demo           Intro
      ‣ Intro
      ‣ The tools                                Tips
      ‣ The language                                                                Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                                     Language

      ‣ Tips and tricks                                  Deploying
      ‣ The demo                                                                    UI
                                                                     Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                      pete goodliffe




in 90 minutes...
      ‣ Intro
      ‣ The tools
      ‣ The language
      ‣ The UI
                     Tips                 Tips
                                                    Demo            Intro




                                                                                Tools




                   and tricks
      ‣ Key technologies
      ‣ Deploying                           Further info

      ‣ Further info                                                              Language

      ‣ Tips and tricks                              Deploying
      ‣ The demo                                                                UI
                                                                 Technologies
iPhone development a brief introduction          pete goodliffe




                               Thinking iPhone
iPhone development a brief introduction                          pete goodliffe




                                 Get the UI right
                                             HIG
                                    resource conservation
                                (alpha blending, prerendering)
                                          asynchrony
iPhone development a brief introduction     pete goodliffe




                The network is not always
                        available
iPhone development a brief introduction             pete goodliffe




                          Do not write to disk
                                          (often)
iPhone development a brief introduction                pete goodliffe




                           Conserve resources
                                             RAM
                                              CPU
                                          filesystem
iPhone development a brief introduction                                                      pete goodliffe




in 90 minutes...                                    Demo            Intro
      ‣ Intro
      ‣ The tools                         Tips

      ‣ The language                                                            Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                           Further info

      ‣ Further info                                                              Language

      ‣ Tips and tricks                              Deploying
      ‣ The demo                                                                UI
                                                                 Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                   Demo           Intro
      ‣ Intro
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction                                                       pete goodliffe




in 90 minutes...                                Demo

                                                                  Intro
      ‣ Intro


                    The demo
      ‣ The tools                           Tips
      ‣ The language                                                          Tools

      ‣ The UI
      ‣ Key technologies
      ‣ Deploying                         Further info

      ‣ Further info                                                               Language

      ‣ Tips and tricks                            Deploying
      ‣ The demo                                                              UI
                                                               Technologies
iPhone development a brief introduction      pete goodliffe




                           (wish me luck)
                              wasn’t that
                              marvellous?!
iPhone development a brief introduction   pete goodliffe
iPhone development a brief introduction           pete goodliffe




                                          Pete Goodliffe
                                          pete@goodliffe.net

Contenu connexe

En vedette

En vedette (14)

The stage iii of begg technique /certified fixed orthodontic courses by Ind...
The stage iii of begg technique   /certified fixed orthodontic courses by Ind...The stage iii of begg technique   /certified fixed orthodontic courses by Ind...
The stage iii of begg technique /certified fixed orthodontic courses by Ind...
 
Ceph history, evolotion &amp; landmarks
Ceph history, evolotion &amp; landmarksCeph history, evolotion &amp; landmarks
Ceph history, evolotion &amp; landmarks
 
Headgear /certified fixed orthodontic courses by Indian dental academy
Headgear /certified fixed orthodontic courses by Indian dental academy Headgear /certified fixed orthodontic courses by Indian dental academy
Headgear /certified fixed orthodontic courses by Indian dental academy
 
Postero anterior cephalometric / endodontic courses
Postero anterior cephalometric / endodontic coursesPostero anterior cephalometric / endodontic courses
Postero anterior cephalometric / endodontic courses
 
Zygomatic anchorage ( mini plates ) in orthodontic
Zygomatic anchorage ( mini plates ) in orthodontic Zygomatic anchorage ( mini plates ) in orthodontic
Zygomatic anchorage ( mini plates ) in orthodontic
 
Cephalometric landmarks
Cephalometric landmarksCephalometric landmarks
Cephalometric landmarks
 
"Tesla Motors" marka inceleme
"Tesla Motors" marka inceleme"Tesla Motors" marka inceleme
"Tesla Motors" marka inceleme
 
Class 2 malocclusion /certified fixed orthodontic courses by Indian dental ac...
Class 2 malocclusion /certified fixed orthodontic courses by Indian dental ac...Class 2 malocclusion /certified fixed orthodontic courses by Indian dental ac...
Class 2 malocclusion /certified fixed orthodontic courses by Indian dental ac...
 
Growth modification of different types of malocclusion
Growth modification  of different types of  malocclusionGrowth modification  of different types of  malocclusion
Growth modification of different types of malocclusion
 
Postero anterior cephalometric analysis /certified fixed orthodontic courses...
Postero anterior cephalometric  analysis /certified fixed orthodontic courses...Postero anterior cephalometric  analysis /certified fixed orthodontic courses...
Postero anterior cephalometric analysis /certified fixed orthodontic courses...
 
Modelanalysis /certified fixed orthodontic courses by Indian dental academy
Modelanalysis /certified fixed orthodontic courses by Indian dental academy Modelanalysis /certified fixed orthodontic courses by Indian dental academy
Modelanalysis /certified fixed orthodontic courses by Indian dental academy
 
Mascara facial
Mascara facial Mascara facial
Mascara facial
 
Hybrid functional appliance/certified fixed orthodontic courses by Indian den...
Hybrid functional appliance/certified fixed orthodontic courses by Indian den...Hybrid functional appliance/certified fixed orthodontic courses by Indian den...
Hybrid functional appliance/certified fixed orthodontic courses by Indian den...
 
파이썬 확률과 통계 기초 이해하기
파이썬 확률과 통계 기초 이해하기파이썬 확률과 통계 기초 이해하기
파이썬 확률과 통계 기초 이해하기
 

Similaire à iOS Development (BCS Newcastle)

Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhone
PiTechnologies
 
Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_
clscholz
 
Modern mobile development overview
Modern mobile development overviewModern mobile development overview
Modern mobile development overview
Dima Maleev
 
Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9
carolscholz
 
Storyboard I Phone Scholz Week 6 Finalversion
Storyboard I Phone Scholz Week 6 FinalversionStoryboard I Phone Scholz Week 6 Finalversion
Storyboard I Phone Scholz Week 6 Finalversion
carolscholz
 
Storyboard i phone scholz_week_7_finalversion
Storyboard i phone scholz_week_7_finalversionStoryboard i phone scholz_week_7_finalversion
Storyboard i phone scholz_week_7_finalversion
carolscholz
 

Similaire à iOS Development (BCS Newcastle) (20)

iOS Development (BCS Edinburgh 2011-03-09)
iOS Development (BCS Edinburgh 2011-03-09)iOS Development (BCS Edinburgh 2011-03-09)
iOS Development (BCS Edinburgh 2011-03-09)
 
iPhone IN YOUR FACE
iPhone IN YOUR FACEiPhone IN YOUR FACE
iPhone IN YOUR FACE
 
Shooting for Vertical – ONA19
Shooting for Vertical – ONA19Shooting for Vertical – ONA19
Shooting for Vertical – ONA19
 
Advantages And Disadvantages of Python Development
Advantages And Disadvantages of Python DevelopmentAdvantages And Disadvantages of Python Development
Advantages And Disadvantages of Python Development
 
I Phone Session Mufix
I Phone Session MufixI Phone Session Mufix
I Phone Session Mufix
 
Phonegap 1.0
Phonegap 1.0Phonegap 1.0
Phonegap 1.0
 
Developer's got talent iPhone
Developer's got talent iPhoneDeveloper's got talent iPhone
Developer's got talent iPhone
 
JHipster conf : craftsmanship & tdd
JHipster conf : craftsmanship & tddJHipster conf : craftsmanship & tdd
JHipster conf : craftsmanship & tdd
 
Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)
 
Mobile Prototyping
Mobile PrototypingMobile Prototyping
Mobile Prototyping
 
Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_
 
Da DevOps a DevSecOps: Servizi applicativi di sicurezza automatizzati con F5 ...
Da DevOps a DevSecOps: Servizi applicativi di sicurezza automatizzati con F5 ...Da DevOps a DevSecOps: Servizi applicativi di sicurezza automatizzati con F5 ...
Da DevOps a DevSecOps: Servizi applicativi di sicurezza automatizzati con F5 ...
 
The future is hybrid
The future is hybridThe future is hybrid
The future is hybrid
 
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia
 
Why Python is the Best Coding Language For PWA Development_.ppt
Why Python is the Best Coding Language For PWA Development_.pptWhy Python is the Best Coding Language For PWA Development_.ppt
Why Python is the Best Coding Language For PWA Development_.ppt
 
Modern mobile development overview
Modern mobile development overviewModern mobile development overview
Modern mobile development overview
 
Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9
 
Storyboard I Phone Scholz Week 6 Finalversion
Storyboard I Phone Scholz Week 6 FinalversionStoryboard I Phone Scholz Week 6 Finalversion
Storyboard I Phone Scholz Week 6 Finalversion
 
Storyboard i phone scholz_week_7_finalversion
Storyboard i phone scholz_week_7_finalversionStoryboard i phone scholz_week_7_finalversion
Storyboard i phone scholz_week_7_finalversion
 
Features of Python.pdf
Features of Python.pdfFeatures of Python.pdf
Features of Python.pdf
 

Plus de Pete Goodliffe

Plus de Pete Goodliffe (14)

Becoming a Better Programmer
Becoming a Better ProgrammerBecoming a Better Programmer
Becoming a Better Programmer
 
Words in Code
Words in CodeWords in Code
Words in Code
 
Running Effective Worship Rehearsals
Running Effective Worship RehearsalsRunning Effective Worship Rehearsals
Running Effective Worship Rehearsals
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)
 
Design Sins
Design SinsDesign Sins
Design Sins
 
Advanced iOS
Advanced iOSAdvanced iOS
Advanced iOS
 
Version Control Done Right
Version Control Done RightVersion Control Done Right
Version Control Done Right
 
Getting Into Git
Getting Into GitGetting Into Git
Getting Into Git
 
C++: The Cathedral and the Bizarre
C++: The Cathedral and the BizarreC++: The Cathedral and the Bizarre
C++: The Cathedral and the Bizarre
 
Three Objectionable Things
Three Objectionable ThingsThree Objectionable Things
Three Objectionable Things
 
Coping with Complexity
Coping with ComplexityCoping with Complexity
Coping with Complexity
 
Manyfestos
ManyfestosManyfestos
Manyfestos
 
Stood at the bottom of a mountain looking up
Stood at the bottom of a mountain looking upStood at the bottom of a mountain looking up
Stood at the bottom of a mountain looking up
 
Legacy Code: Learning To Live With It
Legacy Code: Learning To Live With ItLegacy Code: Learning To Live With It
Legacy Code: Learning To Live With It
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

iOS Development (BCS Newcastle)

  • 1. iPhoneNewcastle BCS development a brief introduction pete goodliffe Hello, world! iPhone iOS Development a brief introduction rkably , very rema really, Pete Goodliffe pete@goodliffe.net
  • 2. iPhone development a brief introduction pete goodliffe Pete Goodliffe A programmer, a columnist, an author, a teacher. Someone who cares about code. www.goodliffe.net goodliffe.blogspot.com @petegoodliffe
  • 3. iPhone development a brief introduction pete goodliffe Pete Goodliffe A programmer, a columnist, an author, a teacher. Someone who cares about code. www.goodliffe.net goodliffe.blogspot.com @petegoodliffe
  • 4. iPhone development a brief introduction pete goodliffe
  • 5. iPhone development a brief introduction pete goodliffe talk synopsis An introduction to iPhone/iOS development An introduction to iPhone development for beginners or those who are casually interested and want a leg up the learning curve. This talk is an overview of how to get started as an iPhone developer, and an introduction to the core technologies, including: ‣ Common iPhone/Mac OS design patterns, idioms, and practices ‣ Becoming a native: how to "think in iPhone" ‣ Overview of the libraries and facilities that exist ‣ Limitations of the development environment
  • 6. iPhone development a brief introduction pete goodliffe 90 minutes? is that all?!!!
  • 7. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies m… pie Mm
  • 8. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro Introduction ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 9. iPhone development a brief introduction pete goodliffe who are you?
  • 10. iPhone development a brief introduction pete goodliffe why develop for the iPhone?
  • 11. iPhone development a brief introduction pete goodliffe the alternatives
  • 12. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 13. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 14. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro The tools ‣ The tools Tips Tools ‣ The language ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 15. iPhone development a brief introduction pete goodliffe ❖ The cast ❖ Xcode iPhone/iPod Touch/iPad (Interface builder) iPhone simulator Instruments/Shark iOS Provisioning Portal Other tools
  • 16. iPhone development a brief introduction pete goodliffe Xcode
  • 17. iPhone development a brief introduction pete goodliffe
  • 18. iPhone development a brief introduction pete goodliffe
  • 19. iPhone development a brief introduction pete goodliffe an iPhone
  • 20. iPhone development a brief introduction pete goodliffe Interface Builder
  • 21. iPhone development a brief introduction pete goodliffe iPhone simulator
  • 22. iPhone development a brief introduction pete goodliffe Instruments/Shark
  • 23. iPhone development a brief introduction pete goodliffe Other tools
  • 24. iPhone development a brief introduction pete goodliffe Getting set up... Get a Mac Get the tools Install Get an ADC account $$$ Code … Profit
  • 25. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips Tools ‣ The language ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 26. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 27. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro The language ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 28. iPhone development a brief introduction pete goodliffe (well, languages) C C++ Objective-C
  • 29. iPhone development a brief introduction pete goodliffe (well, languages) C C++ Objective-C
  • 30. iPhone development a brief introduction pete goodliffe
  • 31. iPhone development a brief introduction pete goodliffe a history of objective-c in 14 lines and 12 words (give or take)
  • 32. iPhone development a brief introduction pete goodliffe algol CPL Simula BCPL Smalltalk B C Objective-C C++ Java C# D
  • 33. iPhone development a brief introduction pete goodliffe objective C is... dynamic based on message passing follows C compilation model full of [ ] and @s ot too n - (id) thisIsAMethod:(int)param1 ry! signature:(float)param2 sca { for (int n (brace n < 10; ++n) = 0; yourself) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } }
  • 34. iPhone development a brief introduction pete goodliffe .m file @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 35. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 @class signature:(float)param2 { @interface @implementation for (int n = 0; n < 10; ++n) { @end NSLog(@”N=%d”, n); @property [object callMethod:1 thing:2]; @private } } @protected @end
  • 36. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 37. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 38. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 39. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 C an { stil l C fr write for (int n = 0; n < 10; ++n)ee func (and c tion all) { s NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 40. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); NSS [object callMethod:1 thing:2]; tri } ng } @end
  • 41. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } } @end
  • 42. iPhone development a brief introduction pete goodliffe @implementation MyClass - (id) thisIsAMethod:(int)param1 signature:(float)param2 { for (int n = 0; n < 10; ++n) { NSLog(@”N=%d”, n); [object callMethod:1 thing:2]; } Can } call nil @end
  • 43. iPhone development a brief introduction pete goodliffe Sending messages [object method]; int i = [object method]; [[object method1] method2]; [object method:10]; [object1 method:[object 2:method]];
  • 44. iPhone development a brief introduction pete goodliffe Method names parameters object [circle setCenterAtX:110 y:675]; method name selector name is: setCenterAtX:y: method declared as: - (void) setCentreAtX:(float)x y:(float)y SEL s = @selector(setCenterAtX:y:); [circle performSelector:s];
  • 45. iPhone development a brief introduction pete goodliffe parameter types: int, float, unsigned, etc syntax: (return type) id
  • 46. iPhone development a brief introduction pete goodliffe .h file @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 47. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 48. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 49. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 50. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 51. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } nda nt) (redu - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 52. iPhone development a brief introduction pete goodliffe @class ForwardDeclaration; @interface MyClass : NSObject { ForwardDeclaration *member; bool otherMember; } - (id) init; - (id) initWithItems:(NSArray*)array enabled:(bool)enabled; + (id) myClassWithItems:(NSArray*)array; @end
  • 53. iPhone development a brief introduction pete goodliffe Objective C++ In .mm files Classes can contain C++ objects May use C++ constructs in functions You can use RAII C++ libraries
  • 54. iPhone development a brief introduction pete goodliffe Properties @interface MyClass { int harold; } @property (nonatomic) int harold; @end In MyClass.m... @interface MyClass @synthesize harold; @end This will become important when we look at creating UIs
  • 55. iPhone development a brief introduction pete goodliffe The tao of objects You don’t call methods You pass messages to objects [theObject sendMessage:parameter];
  • 56. iPhone development a brief introduction pete goodliffe Java, C++, C# object.myMethod(1066); MyClass myMethod(int) MyClass *this another() more() class MyClass { private data public myMethod(int i) { // ... } };
  • 57. iPhone development a brief introduction pete goodliffe Objective-C [object myMethod:1066]; MyClass message (selector) MyClass *self myMethod(int) another() @implementation MyClass - (void) myMethod:(int)i private data { // ... } @end
  • 58. iPhone development a brief introduction pete goodliffe Categories @interface NSObject (Foo) - (void) extraFooMethod; @end NSArray *array = [NSArray array]; [array extraFooMethod];
  • 59. iPhone development a brief introduction pete goodliffe Object lifetime All objects are reference counted (the retain count) NSArray *array1 = [[NSArray alloc] init]; NSArray *array2 = [NSArray array]; [array1 release]; [array2 release]; // wrong Circle *circle = [[Circle alloc] initAtCenterX:100 y:100 radius:200];
  • 60. iPhone development a brief introduction pete goodliffe Retain Action count obj=[[ClassType alloc] init]; 1 [obj retain]; 2 [obj release]; 1 [obj release]; 0 [object dealloc];
  • 61. iPhone development a brief introduction pete goodliffe Retain Action count obj=[[ClassType alloc] init]; 1 [obj retain]; 2 [obj release]; 1 [obj release]; 0 [object dealloc];
  • 62. iPhone development a brief introduction pete goodliffe ARC automatic reference counting
  • 63. iPhone development a brief introduction pete goodliffe The usual suspects NSObject NSString NSArray NSMutableArray NSNumber NSThread NSDictionary NSMutableDictionary NSApplication NSData NSMutableData NSURL NSSet NSMutableSet NSValue
  • 64. iPhone development a brief introduction pete goodliffe Miscellany Statically typed my arse #import Constructor kludgery
  • 65. iPhone development a brief introduction pete goodliffe Idioms Delegates Key-value coding Protocol (interfaces) formal and informal
  • 66. iPhone development a brief introduction pete goodliffe The libraries Objective C Cocoa Touch UIKit, etc Core Audio, Open GL ES, Media Quartz, Core Animation Core Services Core OS Posix, SQLite, Core Foundation, BSD C
  • 67. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 68. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 69. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro The UI ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo Technologies UI
  • 70. iPhone development a brief introduction pete goodliffe Interface Builder
  • 71. iPhone development a brief introduction pete goodliffe Held in .xib files (Compiled NIBs) Loaded into application (semi-automatically) IB is integrated into Xcode UIKit framework
  • 72. iPhone development a brief introduction pete goodliffe
  • 73. iPhone development a brief introduction pete goodliffe Create UI elements Link to an object reference in the XIB through properties marked as IBOutlet Link actions to methods defined IBAction
  • 74. iPhone development a brief introduction pete goodliffe Storyboards (just don’t)
  • 75. iPhone development a brief introduction pete goodliffe // // ExampleAppDelegate.h // Example // // Created by Pete Goodliffe on 03/04/2010. // Copyright __MyCompanyName__ 2010. All rights reserved. // #import <UIKit/UIKit.h> @interface ExampleAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; UINavigationController *navigationController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UINavigationController *navigationController; @end
  • 76. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo Technologies UI
  • 77. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 78. iPhone development a brief introduction pete goodliffe ‣ Intro Key in 90 minutes... ‣ The tools ‣ The language ‣ The UI Tips Demo Intro Tools technologies ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 79. iPhone development a brief introduction pete goodliffe UIKit Core Graphics (Quartz) Core Animation Core Audio Media Core / AVFoundation MapKit / Core Location CoreData (or sqlite) OpenGL ES External Accessory
  • 80. iPhone development a brief introduction pete goodliffe iOS 1 Remember that?
  • 81. iPhone development a brief introduction pete goodliffe iOS 2 New in iOS 3 iPad (popovers, split views) Being able to write apps ! Gesture recognizers Copy & paste File sharing via iTunes Supported file types External display New in iOS 4 CoreText MMS Multitasking Blocks & GCD Game Center EventKit: Calendar access New in iOS 5 In-app SMS iCloud Storage Media access ARC QuickLook Xcode 4 iAd Storyboards New audio/video APIs Newstand Twitter Integration Notification Center Core Image New instruments Location Simulation
  • 82. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 83. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 84. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro Deploying ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks ‣ The demo Deploying UI Technologies
  • 85. iPhone development a brief introduction pete goodliffe Deploying iPhone simulator iPhone developer account ($$$) free “DRM hell” x86 Deployment certificates runs at desktop speed different build targets 100 devices per year more memory network stable App store iTunes Connect Another build type
  • 86. iPhone development a brief introduction pete goodliffe App store submit get rejected fix it resubmit profit
  • 87. iPhone development a brief introduction pete goodliffe
  • 88. iPhone development a brief introduction pete goodliffe
  • 89. iPhone development a brief introduction pete goodliffe
  • 90. iPhone development a brief introduction pete goodliffe
  • 91. iPhone development a brief introduction pete goodliffe
  • 92. iPhone development a brief introduction pete goodliffe
  • 93. iPhone development a brief introduction pete goodliffe
  • 94. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks ‣ The demo Deploying UI Technologies
  • 95. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 96. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro Further info ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 97. iPhone development a brief introduction pete goodliffe Xcode documentation developer.apple.com/iphone Books Websites Stack Overflow, CocoaDev, ADC Videos on iTunes U http://itunes.stanford.edu/
  • 98. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 99. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 100. iPhone development a brief introduction pete goodliffe in 90 minutes... ‣ Intro ‣ The tools ‣ The language ‣ The UI Tips Tips Demo Intro Tools and tricks ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 101. iPhone development a brief introduction pete goodliffe Thinking iPhone
  • 102. iPhone development a brief introduction pete goodliffe Get the UI right HIG resource conservation (alpha blending, prerendering) asynchrony
  • 103. iPhone development a brief introduction pete goodliffe The network is not always available
  • 104. iPhone development a brief introduction pete goodliffe Do not write to disk (often)
  • 105. iPhone development a brief introduction pete goodliffe Conserve resources RAM CPU filesystem
  • 106. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 107. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 108. iPhone development a brief introduction pete goodliffe in 90 minutes... Demo Intro ‣ Intro The demo ‣ The tools Tips ‣ The language Tools ‣ The UI ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies
  • 109. iPhone development a brief introduction pete goodliffe (wish me luck) wasn’t that marvellous?!
  • 110. iPhone development a brief introduction pete goodliffe
  • 111. iPhone development a brief introduction pete goodliffe Pete Goodliffe pete@goodliffe.net