SlideShare a Scribd company logo
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
passing rather than method invocation
• May look familiar to Vision users
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
HAIL STEVE
KING OF NeXT!
Message Passing
• Instead of calling a function we send
messages to our object;
Foo *myObject;
...
[myObject doThingsWithArg:argument];
Object Selector Argument
Function Declaration
• More new syntax:
-(void) doThingsWithArg:(int)anArg;
Method
“scope”
Return Type Selector Argument type Argument name
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: Initialisation selector is custom,
but always starts with “init” by convention.
• Constructors return ‘id’ type
• Standard construction line looks like:
[[myObject alloc] init];
Foo.h:
@interface Foo : NSObject {
int anInt;
NSString *aString;
}
-(id) init;
-(id) initWithArg:(int)arg
andArg:(NSString*)arg2;
-(void) doThingsWithArg:(int)anArg;
@end
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
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
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
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
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”
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
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’
A quick and dirty intro to objective c
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
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
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
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
Summer 2009 for the 2nd
year of their
iPhone programming course
• Missing some iPhone OS 3 features, but
very good.
Going Further
• Buy a Mac
• Make The Steve pleased
• Wear rollneck sweaters
• Conform
• Conform
• Conform
• Conform
• Conform
• Conform
• Conform
A quick and dirty intro to objective c

More Related Content

What's hot (7)

PDF
Slicing, Dicing, And Linting OpenAPI
lestrrat
 
PPTX
What's new in C# 8.0 (beta)
Muralidharan Deenathayalan
 
PDF
FlawDetector - Rubykaigi2013 LT
ginriki
 
PPT
Zpugdccherry 101105081729-phpapp01
Jeffrey Clark
 
PDF
Local search-based pattern matching features in EMF-IncQuery
Zoltán Ujhelyi
 
PPT
Take Flight - Using Fly with the Play Framework
Asher Glynn
 
PPTX
Declarative authorization in REST services in SharePoint with F# and ServiceS...
Sergey Tihon
 
Slicing, Dicing, And Linting OpenAPI
lestrrat
 
What's new in C# 8.0 (beta)
Muralidharan Deenathayalan
 
FlawDetector - Rubykaigi2013 LT
ginriki
 
Zpugdccherry 101105081729-phpapp01
Jeffrey Clark
 
Local search-based pattern matching features in EMF-IncQuery
Zoltán Ujhelyi
 
Take Flight - Using Fly with the Play Framework
Asher Glynn
 
Declarative authorization in REST services in SharePoint with F# and ServiceS...
Sergey Tihon
 

Similar to A quick and dirty intro to objective c (20)

PPT
Objective c
ricky_chatur2005
 
PPT
Objective c intro (1)
David Echeverria
 
PDF
Никита Корчагин - Programming Apple iOS with Objective-C
DataArt
 
PPT
Objective-C for iOS Application Development
Dhaval Kaneria
 
PDF
Objective-C
Abdlhadi Oul
 
PPTX
iOS Session-2
Hussain Behestee
 
PDF
iOS Programming Intro
Lou Loizides
 
PPT
iOS Application Development
Compare Infobase Limited
 
PDF
Iphone course 1
Janet Huang
 
PDF
Louis Loizides iOS Programming Introduction
Lou Loizides
 
PPTX
Objective c slide I
Diksha Bhargava
 
PDF
01 objective-c session 1
Amr Elghadban (AmrAngry)
 
PDF
What Makes Objective C Dynamic?
Kyle Oba
 
PDF
Programming with Objective-C
Nagendra Ram
 
PPT
Cocoa for Web Developers
georgebrock
 
PPTX
Introduction to Objective - C
Asim Rais Siddiqui
 
PPTX
Ios development
elnaqah
 
PDF
Objc
Pragati Singh
 
PDF
Write native iPhone applications using Eclipse CDT
Atit Patumvan
 
PDF
Session 2 - Objective-C basics
Vu Tran Lam
 
Objective c
ricky_chatur2005
 
Objective c intro (1)
David Echeverria
 
Никита Корчагин - Programming Apple iOS with Objective-C
DataArt
 
Objective-C for iOS Application Development
Dhaval Kaneria
 
Objective-C
Abdlhadi Oul
 
iOS Session-2
Hussain Behestee
 
iOS Programming Intro
Lou Loizides
 
iOS Application Development
Compare Infobase Limited
 
Iphone course 1
Janet Huang
 
Louis Loizides iOS Programming Introduction
Lou Loizides
 
Objective c slide I
Diksha Bhargava
 
01 objective-c session 1
Amr Elghadban (AmrAngry)
 
What Makes Objective C Dynamic?
Kyle Oba
 
Programming with Objective-C
Nagendra Ram
 
Cocoa for Web Developers
georgebrock
 
Introduction to Objective - C
Asim Rais Siddiqui
 
Ios development
elnaqah
 
Write native iPhone applications using Eclipse CDT
Atit Patumvan
 
Session 2 - Objective-C basics
Vu Tran Lam
 
Ad

Recently uploaded (20)

PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
PDF
NASA A Researcher’s Guide to International Space Station : Earth Observations
Dr. PANKAJ DHUSSA
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Manual Testing for Accessibility Enhancement
Julia Undeutsch
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Evolution: How True AI is Redefining Safety in Industry 4.0
vikaassingh4433
 
PDF
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
Linux schedulers for fun and profit with SchedKit
Alessio Biancalana
 
PDF
NASA A Researcher’s Guide to International Space Station : Fundamental Physics
Dr. PANKAJ DHUSSA
 
PPTX
Wondershare Filmora Crack Free Download 2025
josanj305
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
NASA A Researcher’s Guide to International Space Station : Earth Observations
Dr. PANKAJ DHUSSA
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Manual Testing for Accessibility Enhancement
Julia Undeutsch
 
Digital Circuits, important subject in CS
contactparinay1
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Evolution: How True AI is Redefining Safety in Industry 4.0
vikaassingh4433
 
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Linux schedulers for fun and profit with SchedKit
Alessio Biancalana
 
NASA A Researcher’s Guide to International Space Station : Fundamental Physics
Dr. PANKAJ DHUSSA
 
Wondershare Filmora Crack Free Download 2025
josanj305
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
Ad

A quick and dirty intro to objective c

  • 1. A Quick and Dirty Intro to Objective C and iPhone Programming …or how I stopped worrying and learned to love Steve Jobs
  • 2. What we’re going to cover • Objective C basics • iPhone library basics • Writing an app • Worshipping Steve Jobs
  • 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. 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
  • 6. Message Passing • Instead of calling a function we send messages to our object; Foo *myObject; ... [myObject doThingsWithArg:argument]; Object Selector Argument
  • 7. Function Declaration • More new syntax: -(void) doThingsWithArg:(int)anArg; Method “scope” Return Type Selector Argument type Argument name
  • 8. Class Definitions • Split into two files .h – header .m - implementation
  • 9. Foo.h: @interface Foo : NSObject { int anInt; NSString *aString; } -(void) doThingsWithArg:(int)anArg; @end
  • 10. Foo.m: #import “Foo.h” @implementation Foo -(void) doThingsWithArg:(int)anArg { … } @end
  • 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. Foo.h: @interface Foo : NSObject { int anInt; NSString *aString; } -(id) init; -(id) initWithArg:(int)arg andArg:(NSString*)arg2; -(void) doThingsWithArg:(int)anArg; @end
  • 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. 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. 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. 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. 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. 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. 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’
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. The Steve says “LETS MAKE AN APP”
  • 25. Going Further • THE Cocoa programming book seems to be: Cocoa Programming for Mac OS X by Aaron Hillegass
  • 26. 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.
  • 27. Going Further • Buy a Mac • Make The Steve pleased • Wear rollneck sweaters • Conform • Conform • Conform • Conform • Conform • Conform • Conform