Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

iOS Development (BCS Newcastle)

1,673 views

Published on

The slides from a talk I gave to BCS Newcastle in January 2012.

This is an updated form of my standard iOS talk.

Published in: Technology, News & Politics
  • Be the first to comment

iOS Development (BCS Newcastle)

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

×