SlideShare uma empresa Scribd logo
1 de 105
iPhone Edinburgh
       BCS development a brief introduction                                        pete goodliffe




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


                                                                           Pete Goodliffe
                                                                           pete@goodliffe.net
Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction                pete goodliffe




                              90 minutes? is that all?!!!

Thursday, 10 March 2011
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
Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction     pete goodliffe




                                  who are you?




Thursday, 10 March 2011
iPhone development a brief introduction     pete goodliffe




                                why develop
                               for the iPhone?




Thursday, 10 March 2011
iPhone development a brief introduction    pete goodliffe




                             the alternatives




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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


Thursday, 10 March 2011
iPhone development a brief introduction           pete goodliffe




                                               Xcode

Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction         pete goodliffe




                                         an iPhone

Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




                           Interface Builder

Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




                          iPhone simulator

Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




                          Instruments/Shark

Thursday, 10 March 2011
iPhone development a brief introduction         pete goodliffe




                                       Other tools

Thursday, 10 March 2011
iPhone development a brief introduction               pete goodliffe




                             Getting set up...
                                     Get a Mac
                                   Get the tools
                                      Install
                                Get an ADC account   $$$
                                       Code
                                         …
                                       Profit


Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction                 pete goodliffe




                          (well, languages)
                                                   C
                                                  C++
                                               Objective-C




Thursday, 10 March 2011
iPhone development a brief introduction                 pete goodliffe




                          (well, languages)
                                                   C
                                                  C++
                                               Objective-C




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction                    pete goodliffe




                              a history of
                            objective-c in 14
                          lines and 12 words
                                               (give or take)




Thursday, 10 March 2011
iPhone development a brief introduction                               pete goodliffe


                                                  algol


                           CPL                               Simula

                          BCPL                  Smalltalk
                           B
                           C
                                               Objective-C
                                                                 C++


                                                          Java    C#   D

Thursday, 10 March 2011
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];
              }
          }
Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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



Thursday, 10 March 2011
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]];




Thursday, 10 March 2011
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];
Thursday, 10 March 2011
iPhone development a brief introduction                  pete goodliffe




                          parameter types:
                                  int, float, unsigned, etc
                                   syntax: (return type)
                                               id




Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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
Thursday, 10 March 2011
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


Thursday, 10 March 2011
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


Thursday, 10 March 2011
iPhone development a brief introduction               pete goodliffe




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

                      [theObject sendMessage:parameter];



Thursday, 10 March 2011
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)
                                                                   {
                                                                       // ...
                                                                   }
                                                               };



Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction        pete goodliffe



  Categories

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



                NSArray *array = [NSArray array];
                [array extraFooMethod];




Thursday, 10 March 2011
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];


Thursday, 10 March 2011
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];
Thursday, 10 March 2011
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


Thursday, 10 March 2011
iPhone development a brief introduction                pete goodliffe




                                               Miscellany


                Statically typed my arse
                        #import
                 Constructor kludgery



Thursday, 10 March 2011
iPhone development a brief introduction                   pete goodliffe




                                               Idioms

                               Delegates
                           Key-value coding
                          Protocol (interfaces)
                                         formal and informal




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




                           Interface Builder

Thursday, 10 March 2011
iPhone development a brief introduction                     pete goodliffe




                                     Held in .xib files
                                               (Compiled NIBs)

                            Loaded into application
                             (semi-automatically)

                          IB is tightly integrated with
                                      Xcode

                                   UIKit framework


Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
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


Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction                                                       pete goodliffe




   in 90 minutes...
               ‣ Intro
                        Key
               ‣ 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




Thursday, 10 March 2011
iPhone development a brief introduction          pete goodliffe




                                    UIKit
                                Core Graphics
                                 Core Audio
                          Media Core / AVFoundation
                           MapKit / Core Location
                             CoreData (or sqlite)
                                 OpenGL ES
                             External Accessory


Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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

Thursday, 10 March 2011
iPhone development a brief introduction                  pete goodliffe




                                                   App
                                                  store

                                                 submit

                                               get rejected

                                                  fix it

                                                resubmit


                                                 profit

Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
iPhone development a brief introduction   pete goodliffe




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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/



Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction                                                      pete goodliffe




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




                                                                                     Tools




                          and tricks
               ‣ Key technologies
               ‣ Deploying                       Further info

               ‣ Further info                                                          Language

               ‣ Tips and tricks                          Deploying
               ‣ The demo                                                            UI
                                                                      Technologies




Thursday, 10 March 2011
iPhone development a brief introduction          pete goodliffe




                                    Thinking iPhone




Thursday, 10 March 2011
iPhone development a brief introduction                          pete goodliffe




                                      Get the UI right
                                                  HIG
                                         resource conservation
                                     (alpha blending, prerendering)
                                               asynchrony




Thursday, 10 March 2011
iPhone development a brief introduction          pete goodliffe




                          The network is not always
                                  available




Thursday, 10 March 2011
iPhone development a brief introduction             pete goodliffe




                               Do not write to disk
                                               (often)




Thursday, 10 March 2011
iPhone development a brief introduction                pete goodliffe




                                Conserve resources
                                                  RAM
                                                   CPU
                                               filesystem




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
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




Thursday, 10 March 2011
iPhone development a brief introduction      pete goodliffe




                                (wish me luck)
                                   wasn’t that
                                   marvellous?!



Thursday, 10 March 2011
iPhone development a brief introduction           pete goodliffe




                                               Pete Goodliffe
                                               pete@goodliffe.net
Thursday, 10 March 2011

Mais conteúdo relacionado

Destaque

Canine rapid retraction - comp analysis
Canine rapid retraction - comp analysisCanine rapid retraction - comp analysis
Canine rapid retraction - comp analysisIndian dental academy
 
Hard tissue cephalometrics
Hard tissue cephalometricsHard tissue cephalometrics
Hard tissue cephalometricsJubin Babu
 
Portfoli 3r trimestre
Portfoli 3r trimestrePortfoli 3r trimestre
Portfoli 3r trimestreIrene Nieto
 
Bone anchored pendulum appliance. (2)
Bone anchored pendulum appliance. (2)Bone anchored pendulum appliance. (2)
Bone anchored pendulum appliance. (2)Indian dental academy
 
Ch2 lec2 orthodontics "Classifications "
Ch2 lec2 orthodontics "Classifications "Ch2 lec2 orthodontics "Classifications "
Ch2 lec2 orthodontics "Classifications "Cezar Edward Lahham
 
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...Indian dental academy
 
파이썬 데이터 검색
파이썬 데이터 검색파이썬 데이터 검색
파이썬 데이터 검색Yong Joon Moon
 
Posteroanterior radiogram
Posteroanterior  radiogramPosteroanterior  radiogram
Posteroanterior radiogrambilal falahi
 
Ch1 lec2 Orthodontics Introduction
Ch1 lec2 Orthodontics IntroductionCh1 lec2 Orthodontics Introduction
Ch1 lec2 Orthodontics IntroductionCezar Edward Lahham
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
Development of face and oral cavity 4 /certified fixed orthodontic courses by...
Development of face and oral cavity 4 /certified fixed orthodontic courses by...Development of face and oral cavity 4 /certified fixed orthodontic courses by...
Development of face and oral cavity 4 /certified fixed orthodontic courses by...Indian dental academy
 
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...Diagnostic records /certified fixed orthodontic courses by Indian dental acad...
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...Indian dental academy
 
Diagnostico en Cefalometria
Diagnostico en CefalometriaDiagnostico en Cefalometria
Diagnostico en CefalometriaOrtokarlos
 

Destaque (17)

Canine rapid retraction - comp analysis
Canine rapid retraction - comp analysisCanine rapid retraction - comp analysis
Canine rapid retraction - comp analysis
 
Hard tissue cephalometrics
Hard tissue cephalometricsHard tissue cephalometrics
Hard tissue cephalometrics
 
Portfoli 3r trimestre
Portfoli 3r trimestrePortfoli 3r trimestre
Portfoli 3r trimestre
 
Part 9 anchorage control and distal movement
Part 9 anchorage control and distal movementPart 9 anchorage control and distal movement
Part 9 anchorage control and distal movement
 
Bone anchored pendulum appliance. (2)
Bone anchored pendulum appliance. (2)Bone anchored pendulum appliance. (2)
Bone anchored pendulum appliance. (2)
 
z_remy_spaan
z_remy_spaanz_remy_spaan
z_remy_spaan
 
Arnet facial analysis
Arnet facial analysisArnet facial analysis
Arnet facial analysis
 
Ch2 lec2 orthodontics "Classifications "
Ch2 lec2 orthodontics "Classifications "Ch2 lec2 orthodontics "Classifications "
Ch2 lec2 orthodontics "Classifications "
 
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...
Modificationsin begg /certified fixed orthodontic courses by Indian dental ac...
 
Refined begg technique
Refined begg techniqueRefined begg technique
Refined begg technique
 
파이썬 데이터 검색
파이썬 데이터 검색파이썬 데이터 검색
파이썬 데이터 검색
 
Posteroanterior radiogram
Posteroanterior  radiogramPosteroanterior  radiogram
Posteroanterior radiogram
 
Ch1 lec2 Orthodontics Introduction
Ch1 lec2 Orthodontics IntroductionCh1 lec2 Orthodontics Introduction
Ch1 lec2 Orthodontics Introduction
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
Development of face and oral cavity 4 /certified fixed orthodontic courses by...
Development of face and oral cavity 4 /certified fixed orthodontic courses by...Development of face and oral cavity 4 /certified fixed orthodontic courses by...
Development of face and oral cavity 4 /certified fixed orthodontic courses by...
 
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...Diagnostic records /certified fixed orthodontic courses by Indian dental acad...
Diagnostic records /certified fixed orthodontic courses by Indian dental acad...
 
Diagnostico en Cefalometria
Diagnostico en CefalometriaDiagnostico en Cefalometria
Diagnostico en Cefalometria
 

Semelhante a iOS Development (BCS Edinburgh 2011-03-09)

iOS Development (BCS Newcastle)
iOS Development (BCS Newcastle)iOS Development (BCS Newcastle)
iOS Development (BCS Newcastle)Pete Goodliffe
 
Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)SkimaTalk
 
Advanced Speech delivery - Lesson 4
Advanced Speech delivery - Lesson 4Advanced Speech delivery - Lesson 4
Advanced Speech delivery - Lesson 4SkimaTalk
 
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
 
Advantages And Disadvantages of Python Development
Advantages And Disadvantages of Python DevelopmentAdvantages And Disadvantages of Python Development
Advantages And Disadvantages of Python DevelopmentAppsbee
 
Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9carolscholz
 
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_finalversioncarolscholz
 
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 Finalversioncarolscholz
 
Flash Platform Ovierview
Flash Platform OvierviewFlash Platform Ovierview
Flash Platform Ovierviewluca mezzalira
 
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_finalversioncarolscholz
 
Introduction to CALL
Introduction to CALL Introduction to CALL
Introduction to CALL ICTesol
 
Bett 2011 draft vers2
Bett 2011 draft vers2Bett 2011 draft vers2
Bett 2011 draft vers2juliancoultas
 
Storyboard i phone scholz_week_6_finalupdatedversion
Storyboard i phone scholz_week_6_finalupdatedversionStoryboard i phone scholz_week_6_finalupdatedversion
Storyboard i phone scholz_week_6_finalupdatedversioncarolscholz
 
Storyboard i phone scholz_final version_8_24
Storyboard i phone scholz_final version_8_24Storyboard i phone scholz_final version_8_24
Storyboard i phone scholz_final version_8_24clscholz
 

Semelhante a iOS Development (BCS Edinburgh 2011-03-09) (20)

iOS Development (BCS Newcastle)
iOS Development (BCS Newcastle)iOS Development (BCS Newcastle)
iOS Development (BCS Newcastle)
 
Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)Advanced Speech Delivery - Lesson 4 (t)
Advanced Speech Delivery - Lesson 4 (t)
 
Advanced Speech delivery - Lesson 4
Advanced Speech delivery - Lesson 4Advanced Speech delivery - Lesson 4
Advanced Speech delivery - Lesson 4
 
Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_Storyboard i phone scholz_week_8_
Storyboard i phone scholz_week_8_
 
Advantages And Disadvantages of Python Development
Advantages And Disadvantages of Python DevelopmentAdvantages And Disadvantages of Python Development
Advantages And Disadvantages of Python Development
 
iPhone IN YOUR FACE
iPhone IN YOUR FACEiPhone IN YOUR FACE
iPhone IN YOUR FACE
 
Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9Storyboard i phone scholz_week_9
Storyboard i phone scholz_week_9
 
Shooting for Vertical – ONA19
Shooting for Vertical – ONA19Shooting for Vertical – ONA19
Shooting for Vertical – ONA19
 
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
 
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
 
Flash Platform Ovierview
Flash Platform OvierviewFlash Platform Ovierview
Flash Platform Ovierview
 
Leeco
LeecoLeeco
Leeco
 
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
 
Introduction to CALL
Introduction to CALL Introduction to CALL
Introduction to CALL
 
Bett 2011 draft vers2
Bett 2011 draft vers2Bett 2011 draft vers2
Bett 2011 draft vers2
 
Storyboard i phone scholz_week_6_finalupdatedversion
Storyboard i phone scholz_week_6_finalupdatedversionStoryboard i phone scholz_week_6_finalupdatedversion
Storyboard i phone scholz_week_6_finalupdatedversion
 
I Phone Session Mufix
I Phone Session MufixI Phone Session Mufix
I Phone Session Mufix
 
Features of Python.pdf
Features of Python.pdfFeatures of Python.pdf
Features of Python.pdf
 
Storyboard i phone scholz_final version_8_24
Storyboard i phone scholz_final version_8_24Storyboard i phone scholz_final version_8_24
Storyboard i phone scholz_final version_8_24
 
Stefan bielau-dynamo-partners
Stefan bielau-dynamo-partnersStefan bielau-dynamo-partners
Stefan bielau-dynamo-partners
 

Mais de Pete Goodliffe

Becoming a Better Programmer
Becoming a Better ProgrammerBecoming a Better Programmer
Becoming a Better ProgrammerPete Goodliffe
 
Running Effective Worship Rehearsals
Running Effective Worship RehearsalsRunning Effective Worship Rehearsals
Running Effective Worship RehearsalsPete Goodliffe
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Pete Goodliffe
 
Version Control Done Right
Version Control Done RightVersion Control Done Right
Version Control Done RightPete Goodliffe
 
C++: The Cathedral and the Bizarre
C++: The Cathedral and the BizarreC++: The Cathedral and the Bizarre
C++: The Cathedral and the BizarrePete Goodliffe
 
Three Objectionable Things
Three Objectionable ThingsThree Objectionable Things
Three Objectionable ThingsPete Goodliffe
 
Coping with Complexity
Coping with ComplexityCoping with Complexity
Coping with ComplexityPete Goodliffe
 
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 upPete Goodliffe
 
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 ItPete Goodliffe
 

Mais 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
 

Último

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

iOS Development (BCS Edinburgh 2011-03-09)

  • 1. iPhone Edinburgh BCS development a brief introduction pete goodliffe Hello, world! iPhone iOS Development a brief introduction rkably , very rema really, Pete Goodliffe pete@goodliffe.net Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 4. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 6. iPhone development a brief introduction pete goodliffe 90 minutes? is that all?!!! Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 9. iPhone development a brief introduction pete goodliffe who are you? Thursday, 10 March 2011
  • 10. iPhone development a brief introduction pete goodliffe why develop for the iPhone? Thursday, 10 March 2011
  • 11. iPhone development a brief introduction pete goodliffe the alternatives Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 16. iPhone development a brief introduction pete goodliffe Xcode Thursday, 10 March 2011
  • 17. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 18. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 19. iPhone development a brief introduction pete goodliffe an iPhone Thursday, 10 March 2011
  • 20. iPhone development a brief introduction pete goodliffe Interface Builder Thursday, 10 March 2011
  • 21. iPhone development a brief introduction pete goodliffe iPhone simulator Thursday, 10 March 2011
  • 22. iPhone development a brief introduction pete goodliffe Instruments/Shark Thursday, 10 March 2011
  • 23. iPhone development a brief introduction pete goodliffe Other tools Thursday, 10 March 2011
  • 24. iPhone development a brief introduction pete goodliffe Getting set up... Get a Mac Get the tools Install Get an ADC account $$$ Code … Profit Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 28. iPhone development a brief introduction pete goodliffe (well, languages) C C++ Objective-C Thursday, 10 March 2011
  • 29. iPhone development a brief introduction pete goodliffe (well, languages) C C++ Objective-C Thursday, 10 March 2011
  • 30. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 31. iPhone development a brief introduction pete goodliffe a history of objective-c in 14 lines and 12 words (give or take) Thursday, 10 March 2011
  • 32. iPhone development a brief introduction pete goodliffe algol CPL Simula BCPL Smalltalk B C Objective-C C++ Java C# D Thursday, 10 March 2011
  • 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]; } } Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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]]; Thursday, 10 March 2011
  • 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]; Thursday, 10 March 2011
  • 45. iPhone development a brief introduction pete goodliffe parameter types: int, float, unsigned, etc syntax: (return type) id Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 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]; Thursday, 10 March 2011
  • 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) { // ... } }; Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 58. iPhone development a brief introduction pete goodliffe Categories @interface NSObject (Foo) - (void) extraFooMethod; @end NSArray *array = [NSArray array]; [array extraFooMethod]; Thursday, 10 March 2011
  • 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]; Thursday, 10 March 2011
  • 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]; Thursday, 10 March 2011
  • 61. 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 Thursday, 10 March 2011
  • 62. iPhone development a brief introduction pete goodliffe Miscellany Statically typed my arse #import Constructor kludgery Thursday, 10 March 2011
  • 63. iPhone development a brief introduction pete goodliffe Idioms Delegates Key-value coding Protocol (interfaces) formal and informal Thursday, 10 March 2011
  • 64. 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 Thursday, 10 March 2011
  • 65. 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 Thursday, 10 March 2011
  • 66. 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 Thursday, 10 March 2011
  • 67. 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 Thursday, 10 March 2011
  • 68. iPhone development a brief introduction pete goodliffe Interface Builder Thursday, 10 March 2011
  • 69. iPhone development a brief introduction pete goodliffe Held in .xib files (Compiled NIBs) Loaded into application (semi-automatically) IB is tightly integrated with Xcode UIKit framework Thursday, 10 March 2011
  • 70. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 71. 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 Thursday, 10 March 2011
  • 72. 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 Thursday, 10 March 2011
  • 73. 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 Thursday, 10 March 2011
  • 74. 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 Thursday, 10 March 2011
  • 75. iPhone development a brief introduction pete goodliffe in 90 minutes... ‣ Intro Key ‣ 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 Thursday, 10 March 2011
  • 76. iPhone development a brief introduction pete goodliffe UIKit Core Graphics Core Audio Media Core / AVFoundation MapKit / Core Location CoreData (or sqlite) OpenGL ES External Accessory Thursday, 10 March 2011
  • 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 Thursday, 10 March 2011
  • 78. 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 Thursday, 10 March 2011
  • 79. 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 Thursday, 10 March 2011
  • 80. 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 Thursday, 10 March 2011
  • 81. iPhone development a brief introduction pete goodliffe App store submit get rejected fix it resubmit profit Thursday, 10 March 2011
  • 82. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 83. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 84. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 85. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 86. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 87. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 88. iPhone development a brief introduction pete goodliffe Thursday, 10 March 2011
  • 89. 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 Thursday, 10 March 2011
  • 90. 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 Thursday, 10 March 2011
  • 91. 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 Thursday, 10 March 2011
  • 92. 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/ Thursday, 10 March 2011
  • 93. 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 Thursday, 10 March 2011
  • 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 Deploying ‣ The demo UI Technologies Thursday, 10 March 2011
  • 95. iPhone development a brief introduction pete goodliffe in 90 minutes... ‣ Intro ‣ The tools Tips ‣ The language ‣ The UI Tips Demo Intro Tools and tricks ‣ Key technologies ‣ Deploying Further info ‣ Further info Language ‣ Tips and tricks Deploying ‣ The demo UI Technologies Thursday, 10 March 2011
  • 96. iPhone development a brief introduction pete goodliffe Thinking iPhone Thursday, 10 March 2011
  • 97. iPhone development a brief introduction pete goodliffe Get the UI right HIG resource conservation (alpha blending, prerendering) asynchrony Thursday, 10 March 2011
  • 98. iPhone development a brief introduction pete goodliffe The network is not always available Thursday, 10 March 2011
  • 99. iPhone development a brief introduction pete goodliffe Do not write to disk (often) Thursday, 10 March 2011
  • 100. iPhone development a brief introduction pete goodliffe Conserve resources RAM CPU filesystem Thursday, 10 March 2011
  • 101. 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 Thursday, 10 March 2011
  • 102. 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 Thursday, 10 March 2011
  • 103. 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 Thursday, 10 March 2011
  • 104. iPhone development a brief introduction pete goodliffe (wish me luck) wasn’t that marvellous?! Thursday, 10 March 2011
  • 105. iPhone development a brief introduction pete goodliffe Pete Goodliffe pete@goodliffe.net Thursday, 10 March 2011