A Quick and Dirty Intro to
Objective C and iPhone
Programming
…or how I stopped worrying and learned to love Steve Jobs
What we’re going to cover
• Objective C basics
• iPhone library basics
• Writing an app
• Worshipping Steve Jobs
Objective C
• Another way of doing object oriented C
• Superset of the C language
• Uses the Smalltalk idea of message
pas...
Objective C
• Created in the early ’80s
• Adopted by NeXT in 1988
• Apple bought NeXT in 1996 and adopted
objective C as t...
HAIL STEVE
KING OF NeXT!
Message Passing
• Instead of calling a function we send
messages to our object;
Foo *myObject;
...
[myObject doThingsWithA...
Function Declaration
• More new syntax:
-(void) doThingsWithArg:(int)anArg;
Method
“scope”
Return Type Selector Argument t...
Class Definitions
• Split into two files
.h – header
.m - implementation
Foo.h:
@interface Foo : NSObject {
int anInt;
NSString *aString;
}
-(void) doThingsWithArg:(int)anArg;
@end
Foo.m:
#import “Foo.h”
@implementation Foo
-(void) doThingsWithArg:(int)anArg {
…
}
@end
Constructors
• 2 part construction of objects
– Allocation: Allocation selector is “alloc”
– Initialisation: Initialisatio...
Foo.h:
@interface Foo : NSObject {
int anInt;
NSString *aString;
}
-(id) init;
-(id) initWithArg:(int)arg
andArg:(NSString...
Foo.m:
#import “Foo.h”
@implentation Foo
-(id) init {
return self;
}
-(id) initWithArg:(int)arg
andArg:(NSString*)arg2
{
a...
Properties
• New in Objective C 2
– Released a couple of years back
• Automatic construction of accessors
• Must be declar...
Foo.h:
@interface Foo : NSObject {
int anInt;
NSString *aString;
}
-(id) init;
-(id) initWithArg:(int)arg
andArg:(NSString...
Foo.m:
#import “Foo.h”
@implentation Foo
@synthesize anInt;
@synthesize aString;
-(id) init {
[super init];
return self;
}...
Using our new object
Foo *myObj1=[[Foo alloc] init];
Foo *myObj2=[[Foo alloc] initWithArg:1
andArg:@”Pie”];
[myObj1 doStuf...
What was that assign/copy stuff?
• Objective C has a number of ways of
doing memory management
– Garbage collector
• New a...
What was that assign/copy stuff?
• When you get an object its reference
count is 1
• Use “retain” to add one to the count
...
What was that assign/copy stuff?
• In properties you get to say how you want
the reference counts done
– Assign is a simpl...
Reference counting
• This talk is called “quick and dirty”
because that’s all the memory
management I’m mentioning
• I’m s...
iPhone
• The iPhone uses Objective C and a bunch
of Apple libraries
• For many apps you can just bolt together
library bit...
The Steve says “LETS MAKE AN APP”
Going Further
• THE Cocoa programming book seems to
be:
Cocoa Programming for Mac OS X by Aaron Hillegass
Going Further
• Series of talks by Evan Doll and Alan
Cannistraro up on iTunes U
• Talks done at Stanford University in
Su...
Going Further
• Buy a Mac
• Make The Steve pleased
• Wear rollneck sweaters
• Conform
• Conform
• Conform
• Conform
• Conf...
A quick and dirty intro to objective c
A quick and dirty intro to objective c
Upcoming SlideShare
Loading in …5
×

A quick and dirty intro to objective c

1,713 views

Published on

As the description says - a quick intro to Objective C 2, with a gap to make an iPhone app. And pictures of The Steve.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,713
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

A quick and dirty intro to objective c

  1. 1. A Quick and Dirty Intro to Objective C and iPhone Programming …or how I stopped worrying and learned to love Steve Jobs
  2. 2. What we’re going to cover • Objective C basics • iPhone library basics • Writing an app • Worshipping Steve Jobs
  3. 3. Objective C • Another way of doing object oriented C • Superset of the C language • Uses the Smalltalk idea of message passing rather than method invocation • May look familiar to Vision users
  4. 4. Objective C • Created in the early ’80s • Adopted by NeXT in 1988 • Apple bought NeXT in 1996 and adopted objective C as the language behind Mac OS X
  5. 5. HAIL STEVE KING OF NeXT!
  6. 6. Message Passing • Instead of calling a function we send messages to our object; Foo *myObject; ... [myObject doThingsWithArg:argument]; Object Selector Argument
  7. 7. Function Declaration • More new syntax: -(void) doThingsWithArg:(int)anArg; Method “scope” Return Type Selector Argument type Argument name
  8. 8. Class Definitions • Split into two files .h – header .m - implementation
  9. 9. Foo.h: @interface Foo : NSObject { int anInt; NSString *aString; } -(void) doThingsWithArg:(int)anArg; @end
  10. 10. Foo.m: #import “Foo.h” @implementation Foo -(void) doThingsWithArg:(int)anArg { … } @end
  11. 11. Constructors • 2 part construction of objects – Allocation: Allocation selector is “alloc” – Initialisation: Initialisation selector is custom, but always starts with “init” by convention. • Constructors return ‘id’ type • Standard construction line looks like: [[myObject alloc] init];
  12. 12. Foo.h: @interface Foo : NSObject { int anInt; NSString *aString; } -(id) init; -(id) initWithArg:(int)arg andArg:(NSString*)arg2; -(void) doThingsWithArg:(int)anArg; @end
  13. 13. Foo.m: #import “Foo.h” @implentation Foo -(id) init { return self; } -(id) initWithArg:(int)arg andArg:(NSString*)arg2 { anInt=arg; aString=arg2; return self; } -(void) doThingsWithArg:(int)anArg {…} @end
  14. 14. Properties • New in Objective C 2 – Released a couple of years back • Automatic construction of accessors • Must be declared in header and ‘synthesised’ in implementation
  15. 15. Foo.h: @interface Foo : NSObject { int anInt; NSString *aString; } -(id) init; -(id) initWithArg:(int)arg andArg:(NSString*)arg2; -(void) doThingsWithArg:(int)anArg; @property (readwrite,assign) int anInt; @property (readwrite,copy) NSString *aString; @end
  16. 16. Foo.m: #import “Foo.h” @implentation Foo @synthesize anInt; @synthesize aString; -(id) init { [super init]; return self; } -(id) initWithArg:(int)arg andArg:(NSString*)arg2 { [super init]; myInstanceVar=arg; aString=arg2; return self; } -(void) doThingsWithArg:(int)anArg {…} @end
  17. 17. Using our new object Foo *myObj1=[[Foo alloc] init]; Foo *myObj2=[[Foo alloc] initWithArg:1 andArg:@”Pie”]; [myObj1 doStuffWithArg:23]; NSLog(@”%d and %@”,myObj2.anInt, myObj2.aString); //prints out “1 and Pie” NSLog(@”%d and %@”, [myObj2 getAnInt], [myObj2 getAString]); //also prints out “1 and Pie”
  18. 18. What was that assign/copy stuff? • Objective C has a number of ways of doing memory management – Garbage collector • New and not used everywhere – Allocation pools • Baby version of garbage collection – Reference counting • Used everywhere, including with pools and garbage collection
  19. 19. What was that assign/copy stuff? • When you get an object its reference count is 1 • Use “retain” to add one to the count • Use “release” to drop one from the count • When count hits zero the object is destroyed – Destructor method is called ‘dealloc’
  20. 20. What was that assign/copy stuff? • In properties you get to say how you want the reference counts done – Assign is a simple assignment, no reference counting – Retain returns the pointer to an object and ups the reference count by 1 (for non-objects this just works like assign) – Copy returns a copy of the object
  21. 21. Reference counting • This talk is called “quick and dirty” because that’s all the memory management I’m mentioning • I’m still not sure when to retain things as whether things are copied/retained/etc is generally based on function naming conventions. – Lame
  22. 22. iPhone • The iPhone uses Objective C and a bunch of Apple libraries • For many apps you can just bolt together library bits with a little bit of extra logic and data
  23. 23. The Steve says “LETS MAKE AN APP”
  24. 24. Going Further • THE Cocoa programming book seems to be: Cocoa Programming for Mac OS X by Aaron Hillegass
  25. 25. Going Further • Series of talks by Evan Doll and Alan Cannistraro up on iTunes U • Talks done at Stanford University in Summer 2009 for the 2nd year of their iPhone programming course • Missing some iPhone OS 3 features, but very good.
  26. 26. Going Further • Buy a Mac • Make The Steve pleased • Wear rollneck sweaters • Conform • Conform • Conform • Conform • Conform • Conform • Conform

×