What's New in Teams Calling, Meetings and Devices March 2024
iPhone development: A brief introduction
1. ACCU 2010
iPhone development a brief introduction pete goodliffe
Hello,
iPhone
world! Development
a brief introduction
Pete Goodliffe
pete@goodliffe.net
2. iPhone development a brief introduction pete goodliffe
Pete Goodliffe
A programmer, a columnist,
an author, a teacher. Someone
who cares about code.
www.goodliffe.net
goodliffe.blogspot.com
@petegoodliffe
3. iPhone development a brief introduction pete goodliffe
Pete Goodliffe
A programmer, a columnist,
an author, a teacher. Someone
who cares about code.
www.goodliffe.net
goodliffe.blogspot.com
@petegoodliffe
4. iPhone development a brief introduction pete goodliffe
talk synopsis
An introduction to iPhone 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
5. iPhone development a brief introduction pete goodliffe
90 minutes? is that all?!!!
6. 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
7. 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
11. 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
12. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
‣ The tools Tips
‣ The language Tools
‣ The UI
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
13. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
The tools
‣ The tools Tips Tools
‣ The language
‣ The UI
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
14. iPhone development a brief introduction pete goodliffe
❖ The cast ❖
Xcode
iPhone/iPod Touch/iPad
Interface builder
iPhone simulator
Instruments/Shark
Other tools
23. iPhone development a brief introduction pete goodliffe
Getting set up...
Get a Mac
Get the tools
Install
Get an ADC account $$$
Code
…
Profit
24. 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
25. 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
26. 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
27. iPhone development a brief introduction pete goodliffe
(well, languages)
C
C++
Objective-C
29. iPhone development a brief introduction pete goodliffe
a history of
objective-c in 14
lines and 12 words
(give or take)
30. iPhone development a brief introduction pete goodliffe
algol
CPL Simula
BCPL Smalltalk
B
C
Objective-C
C++
Java C# D
31. 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!
signatute:(float)param2 sca
{
for (int n (brace n < 10; ++n)
= 0; yourself)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
32. iPhone development a brief introduction pete goodliffe
.m file
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
@end
33. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
@class
signatute:(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
34. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
@end
35. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
@end
36. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
@end
37. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(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
38. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
NSS
[object callMethod:1 thing:2];
tri
} ng
}
@end
39. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
}
}
@end
40. iPhone development a brief introduction pete goodliffe
@implementation MyClass
- (id) thisIsAMethod:(int)param1
signatute:(float)param2
{
for (int n = 0; n < 10; ++n)
{
NSLog(@”N=%d”, n);
[object callMethod:1 thing:2];
} Can
} call
nil
@end
41. 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]];
42. iPhone development a brief introduction pete goodliffe
Method names
parameters
object
[circle setCenterAtX:(float)x y:(float)y];
method name
method name is: setCenterAtX:y:
SEL s = @selector(setCenterAtX:y:);
[circle performSelector:s];
43. iPhone development a brief introduction pete goodliffe
parameter types:
int, float, unsigned, etc
syntax: (return type)
id
52. iPhone development a brief introduction pete goodliffe
Objective C++
In .mm files
Classes can contain C++ objects
May use in functions
You can use RAII
C++ libraries
53. iPhone development a brief introduction pete goodliffe
Properties
@interface MyClass
{
int harold;
}
@property (nonatomic,assign) int harold;
@end
In MyClass.m...
@interface MyClass
@synthesize harold;
@end
This will become
important when we
look at creating UIs
54. iPhone development a brief introduction pete goodliffe
The tao of objects
You don’t call methods
You pass messages to objects
[theObject sendMessage:parameter];
55. 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)
{
// ...
}
};
56. 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
57. iPhone development a brief introduction pete goodliffe
Categories
@interface NSObject (Foo)
- (void) extraFooMethod;
@end
NSArray *array = [NSArray array];
[array extraFooMethod];
58. 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];
59. iPhone development a brief introduction pete goodliffe
Retain
Action count
[[object alloc] init]; 1
[object retain]; 2
[object release]; 1
[object release]; 0
[object dealloc];
60. 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
61. iPhone development a brief introduction pete goodliffe
Statically typed my arse
#import
62. iPhone development a brief introduction pete goodliffe
Idioms
Delegates
Key-value coding
Protocol (interfaces)
formal and informal
63. 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
64. 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
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
66. 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
68. 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
70. 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
71. 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
72. 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
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 UI
Technologies
74. iPhone development a brief introduction pete goodliffe
‣ Intro
Key
in 90 minutes...
‣ The tools
‣ The language
‣ The UI
Tips
Demo Intro
Tools
technologies
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
75. 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
76. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
‣ The tools Tips
‣ The language Tools
‣ The UI
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
77. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
‣ The tools Tips
‣ The language Tools
‣ The UI
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
78. iPhone development a brief introduction pete goodliffe
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
79. 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
80. iPhone development a brief introduction pete goodliffe
App
store
submit
get rejected
fix it
resubmit
profit
81. 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
82. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
‣ The tools Tips
‣ The language Tools
‣ The UI
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
83. iPhone development a brief introduction pete goodliffe
in 90 minutes... Demo Intro
‣ Intro
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
84. 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/
85. 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
86. 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
87. iPhone development a brief introduction pete goodliffe
in 90 minutes...
‣ Intro
‣ The tools
‣ The language
‣ The UI
Tips Tips
Demo Intro
Tools
and tricks
‣ Key technologies
‣ Deploying Further info
‣ Further info Language
‣ Tips and tricks Deploying
‣ The demo UI
Technologies
89. iPhone development a brief introduction pete goodliffe
Get the UI right
HIG
resource conservation
(alpha blending, prerendering)
90. iPhone development a brief introduction pete goodliffe
The network is not always
available
91. iPhone development a brief introduction pete goodliffe
Do not write to disk
(often)
92. iPhone development a brief introduction pete goodliffe
Conserve resources
RAM
CPU
filesystem
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
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
95. 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
96. iPhone development a brief introduction pete goodliffe
(wish me luck)
wasn’t that
marvellous?!
97. iPhone development a brief introduction pete goodliffe
Pete Goodliffe
pete@goodliffe.net