SlideShare a Scribd company logo
iOS Programming - 101
Xcode, Obj-C, iOS APIs
Subhransu Behera
@subhransu
subh@subhb.org
Xcode
Development Tools
IB is built-in in Xcode 4

Xcode
IDE

Interface Builder
UI Design

iOS Simulator
Simulate Apps

Instruments
Monitor Performance
Xcode IDE

• Editors // source editor & UI editor
• Single window interface
• Automatic error identification and correction
• Assistance editing
• Source control
iOS 101 - Xcode, Objective-C, iOS APIs
Navigation
area
Editor area

Debug area

Utility area
Run on Simulator or Device

Switch editors and views
Obj-C (Object Allocation)
Objective C
• Strict super set of C
• Provide Object Oriented Programming capability to C
• Dynamic Runtime.
• Message passing in stead of method calling
• Can mix-in C & C++ codes with Objective C
• Primary language used by Apple for Mac OSX and iOS
application development.
Objective C Class
#import <Foundation/Foundation.h>
@interface Cat : NSObject {
int numberOfEyes;
float lengthOfMyCat;

}

NSString *name;
NSString *breed;

-(void)drinkMilk;
-(void)makeACatDanceFor:(int)numberOfSeconds;
@end
• Class declaration starts at @interface and ends at
@end

• Cat is the class name that is the name after @interface
and before “:”

• NSObject is the name of the super-class
• numberOfEyes, lengthOfMyCat, name, breed are
attributes of a Class object.

• drinkMilk and makeACatDanceFor: are methods that a
an object of Cat (class) can respond to.
Object Allocation
Cat *myCat = [[Cat alloc] init];
// what exactly happens
// 1st line allocates enough memory to hold a cat object

Cat *myCat = [Cat alloc];
// 2nd line initializes the object.

[myCat init];
Message Passing
Message Passing in Obj-C
• In other languages you refer this as method calling.

But due to the nature of Obj-C it’s often referred as a
message (can refer it as method or function) being
passed to an object to make it do something.

• A message is passed to an object with-in square
brackets.

[objectName messageName];

• Messages can be piped together. That is a message
can be passed to an object is the result of another
message.
[[objectName messageOne] messageTwo];
Message Passing Syntax

The @implementation Sec

ny arguments. In Chapter 7,“More on Classes,” you’ll see how methods that take
than one argument are identified.

method
type

return
type

method
name

Figure 3.1

method
takes
argument

argument
type

argument
name

Declaring a method

@implementation Section

ed, the @implementation section contains the actual code for the methods you
ed in the @interface section.You have to specify what type of data is to be store
objects of this class.That is, you have to describe the data that members of the cl
Instance & Class Methods
• Instance responds to instance methods (starts with -)
-(id)init;
-(void)sing;
-(NSString *)description;

• Class responds to class methods (starts with +)
+(id)alloc;
+(void)initEventWithEventName:(NSString *)eventName
Message Passing

• [receiver message];
• [receiver message:argument];
• [receiver message:arg1 andArg:arg2];
Objective-C Properties
Declared Properties

• Provides a getter and a setter method
Manual Declaration without Properties
Refer to the SnailView.h and SnailView.m in SnailRun sample code

#import <UIKit/UIKit.h>
@interface SnailView : UIImageView {
double animationInterval;
NSString *snailName;
}
// manual declaration of methods
-(NSString *)getSnailName;
-(void)setSnailName:(NSString *)name;
@end
Manual Implementation without Properties
// manual getter method
-(NSString *)getSnailName {
return snailName;
}
// manual setter method
-(void)setSnailName:(NSString *)name {
if (![name isEqualToString:snailName]) {
snailName = name;
}
}
Doing it using Properties
@property (attributes) type name;

Atomicity
# atomic
# nonatomic

Writability, Ownership
# readonly
# strong, weak
Properties
@property (nonatomic, strong) NSString *snailName;
@property int animationInterval;
@property int animationInterval;
Core Obj-C Classes
Obj-C Classes
•
•
•
•
•

NSNumber, NSInteger
NSString, NSMutableString
NSArray, NSMutableArray
NSSet, NSMutableSet
NSDictionary, NSMutableDictionary
object vs mutable object
Mutable Object

Object

•
•

Readonly

•

However can be copied
to another mutable
object which can be
modified.

Original Object can not
be modified

•
•

Read-write
Can add, update, delete
original object
Strings
•

Have seen glimpse of it in all our NSLog
messages

•
•

NSLog(@"Objective C is Awesome");
NSString *snailName = [[NSString alloc] init];
Strings Methods
[NSString stringWithFormat:@"%d", someInteger];
[NSString stringWithFormat:@"My integer %d", someInteger];
[snailName stringByReplacingOccurrencesOfString:@"N"
withString:@"P"];
NSString *newString = [myString appendString:@"Another String"];
NSNumbers
NSNumber *animationDuration = [[NSNumber alloc] init];
NSNumber *animationDuration = [[NSNumber alloc]
initWithBool:YES];
NSNumber *animationDuration = [[NSNumber alloc]
initWithInt:1];
NSNumbers
// While creating NSNumbers
NSNumber *myNumber;
myNumber = @'Z';
myNumber = @YES;
myNumber = @1;
myNumber = @10.5;
// While evaluating expressions
NSNumber *myNewNumberAfterExpression = @(25 / 6);
NSArray & NSMutableArray
NSArray
(read-only)

•
•

Manage collections of Objects

•
•

NSMutableArray
(read write)

NSArray creates static array

Objects can be anything NSString, NSNumber, NSDictionary, even
NSArray itself.

NSMutableArray creates dynamic array

NSArray *myArray = [[NSArray alloc] init];
NSArray *myArray = [[NSArray alloc] initWithObjects:Obj1, Obj2, nil];
NSArray *myArray = @[Obj1, Obj2];
getting and setting values
•

Values are being accessed using array index

•
•

myArray[2] // will return 3rd object. Index starts from 0

Value can be set by assigning an Object for an index

•

myArray[3] = @"some value"; // will set value for 4th element
insertion & deletion
•

– count:

•
•

– containsObject:

•
•

Insert a given object at end of the array

– insertObject:atIndex:

•
•

Tells if a given object is present or not

– addObject:

•
•

returns number of objects currently in the array

Insert an object at specified index

– removeAllObjects:

•

Empties the array of all its elements
Learn more about
NSSet and NSDictionary
View Controllers
Key Objects in iOS Apps
Model
Data Model Objects
Data Model Objects
Data Model Objects

View

Controller

UIApplication

Application Delegate
(custom object)

UIWindow

Root View Controller
Event
Loop
Data Model Objects
Data ModelController
Additional Objects
Objects (custom)

Custom Objects
System Objects
Either system or custom objects

Data Model Objects
Data Model Objects
Views and UI Objects
when app finishes launching
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// window is being instantiated

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen
mainScreen] bounds]];
// view controller is being instantiated

self.viewController = [[ViewController alloc]
initWithNibName:@"ViewController" bundle:nil];
// every app needs a window and a window needs a root view controller

self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];
return YES;
}
what is this view controller
•

It is the controller part of M-V-C

•

Every view controller has a view

•

Your custom view controllers are sub-class of
UIViewController class.

•

Provides view-management model for your
apps.

•
•

Adjust the contents of views

•
•

Re-size views

Acts on-behalf of views when users
interacts!

Has view-event methods that gets called
when view appears and disappears!
View controller view events
•

– viewDidLoad:

•
•

– viewDidUnload:

•
•

When view is about to made visible

– viewDidAppear:

•
•

After view controller’s view is released or set to
nil

– viewWillAppear:

•
•

Called after view has been loaded

When view has been fully transitioned to screen

– viewWillDisappear: and – viewDidDisappear:

•

The counter-part of above 2 methods.
Managing View Rotations
•

– shouldAutoRotate

•
•
•

Whether auto-rotation is supported or not
Returns a boolean value YES/NO or TRUE/
FALSE

– supportedInterfaceOrientations

•
•

Returns interface orientation masks

– didRotateFromInterfaceOrientation

•

Notifies when rotation happens
Sample Codes
https://www.dropbox.com/s/wqcuusr9p2j913i/SampleCodes.zip

•
•
•
•
•
•

HelloWorld - Combines two text from text field and display on a label
SliderExample - Displays current value of a Slider
Hashes - Displays the number of hashes and creates a geometric structue
WeatherApp - Provides weather for a given day (hard coded values)
SnailRun - Makes a snail move in a direction (try changing the direction value)
MediaPlayer - Plays a local video file
To learn more ...
•
•

Objective C - Read Stephen Kochan’s Book

•
•
•

Play with Obj-C and iOS lessons from Code School

Go through “iOS UI Element Usage Guidelines” in iOS Human Interface
Guidelines to learn more about the various UI components available and their
usage

Watch iOS Development Videos & WWDC Videos
Join the community “iOS Dev Scout” facebook group.
Thanks

Subhransu Behera
@subhransu
subh@subhb.org

More Related Content

PPT
Objective-C for iOS Application Development
PDF
Introduction to Objective - C
PPTX
Introduction to Objective - C
PPTX
Objective c slide I
PPTX
iOS Basic
PDF
Introduction to objective c
KEY
Objective-C Crash Course for Web Developers
PPT
Objective c
Objective-C for iOS Application Development
Introduction to Objective - C
Introduction to Objective - C
Objective c slide I
iOS Basic
Introduction to objective c
Objective-C Crash Course for Web Developers
Objective c

What's hot (19)

KEY
Parte II Objective C
PDF
Uncommon Design Patterns
PPTX
constructors and destructors in c++
PPTX
Python - OOP Programming
PDF
Java ppt Gandhi Ravi (gandhiri@gmail.com)
PDF
Constructors and destructors
PDF
Constructors destructors
PPTX
Introduction to objective c
KEY
Exciting JavaScript - Part I
PPT
C++ classes tutorials
PPTX
Oops presentation
PPTX
Presentation 3rd
PDF
Declarative Data Modeling in Python
PDF
Object Oriented Programming using C++ - Part 2
PDF
Object Oriented Programming using C++ - Part 4
PPT
Bca 2nd sem u-2 classes & objects
PDF
201005 accelerometer and core Location
PDF
Object Oriented Programming using C++ - Part 3
PPT
Constructor and destructor in C++
Parte II Objective C
Uncommon Design Patterns
constructors and destructors in c++
Python - OOP Programming
Java ppt Gandhi Ravi (gandhiri@gmail.com)
Constructors and destructors
Constructors destructors
Introduction to objective c
Exciting JavaScript - Part I
C++ classes tutorials
Oops presentation
Presentation 3rd
Declarative Data Modeling in Python
Object Oriented Programming using C++ - Part 2
Object Oriented Programming using C++ - Part 4
Bca 2nd sem u-2 classes & objects
201005 accelerometer and core Location
Object Oriented Programming using C++ - Part 3
Constructor and destructor in C++
Ad

Viewers also liked (19)

PDF
Advanced iOS
PDF
Introduction to xcode
PPTX
Apple iOS
PDF
iOS Basic Development Day 2 - Objective-C 2.0 & iOS Framework
PDF
wtf is in Java/JDK/wtf7?
PDF
Orthogonality: A Strategy for Reusable Code
PDF
Introduction of Xcode
PPT
Web Services with Objective-C
PDF
iOS Development - A Beginner Guide
PPTX
Apple iOS Introduction
PDF
Xcode, Basics and Beyond
KEY
キーボードで完結!ハイスピード Xcodeコーディング
PPTX
Ios operating system
PDF
200810 - iPhone Tutorial
PPTX
Presentation on iOS
PPT
iOS Hacking: Advanced Pentest & Forensic Techniques
PDF
Никита Корчагин - Programming Apple iOS with Objective-C
Advanced iOS
Introduction to xcode
Apple iOS
iOS Basic Development Day 2 - Objective-C 2.0 & iOS Framework
wtf is in Java/JDK/wtf7?
Orthogonality: A Strategy for Reusable Code
Introduction of Xcode
Web Services with Objective-C
iOS Development - A Beginner Guide
Apple iOS Introduction
Xcode, Basics and Beyond
キーボードで完結!ハイスピード Xcodeコーディング
Ios operating system
200810 - iPhone Tutorial
Presentation on iOS
iOS Hacking: Advanced Pentest & Forensic Techniques
Никита Корчагин - Programming Apple iOS with Objective-C
Ad

Similar to iOS 101 - Xcode, Objective-C, iOS APIs (20)

PDF
iOS testing
PDF
02 objective-c session 2
PDF
2013-01-10 iOS testing
PPTX
12Structures.pptx
PPTX
Android webinar class_4
PDF
MFF UK - Introduction to iOS
PDF
Working with Cocoa and Objective-C
PPTX
iOS,From Development to Distribution
PPT
Classes1
PPTX
mean stack
PPTX
iOS Development: What's New
PDF
Intro to iOS Development • Made by Many
ZIP
PDF
FI MUNI 2012 - iOS Basics
PDF
Beginning to iPhone development
PDF
iPhone dev intro
KEY
iPhone Development Intro
PPTX
Presentation 1st
PPTX
yrs of IT experience in enterprise programming
iOS testing
02 objective-c session 2
2013-01-10 iOS testing
12Structures.pptx
Android webinar class_4
MFF UK - Introduction to iOS
Working with Cocoa and Objective-C
iOS,From Development to Distribution
Classes1
mean stack
iOS Development: What's New
Intro to iOS Development • Made by Many
FI MUNI 2012 - iOS Basics
Beginning to iPhone development
iPhone dev intro
iPhone Development Intro
Presentation 1st
yrs of IT experience in enterprise programming

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Modernizing your data center with Dell and AMD
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
cuic standard and advanced reporting.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPT
Teaching material agriculture food technology
PPTX
Cloud computing and distributed systems.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
NewMind AI Weekly Chronicles - August'25 Week I
Building Integrated photovoltaic BIPV_UPV.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Modernizing your data center with Dell and AMD
Advanced methodologies resolving dimensionality complications for autism neur...
cuic standard and advanced reporting.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Network Security Unit 5.pdf for BCA BBA.
Per capita expenditure prediction using model stacking based on satellite ima...
Teaching material agriculture food technology
Cloud computing and distributed systems.
The Rise and Fall of 3GPP – Time for a Sabbatical?

iOS 101 - Xcode, Objective-C, iOS APIs

  • 1. iOS Programming - 101 Xcode, Obj-C, iOS APIs Subhransu Behera @subhransu subh@subhb.org
  • 3. Development Tools IB is built-in in Xcode 4 Xcode IDE Interface Builder UI Design iOS Simulator Simulate Apps Instruments Monitor Performance
  • 4. Xcode IDE • Editors // source editor & UI editor • Single window interface • Automatic error identification and correction • Assistance editing • Source control
  • 7. Run on Simulator or Device Switch editors and views
  • 9. Objective C • Strict super set of C • Provide Object Oriented Programming capability to C • Dynamic Runtime. • Message passing in stead of method calling • Can mix-in C & C++ codes with Objective C • Primary language used by Apple for Mac OSX and iOS application development.
  • 10. Objective C Class #import <Foundation/Foundation.h> @interface Cat : NSObject { int numberOfEyes; float lengthOfMyCat; } NSString *name; NSString *breed; -(void)drinkMilk; -(void)makeACatDanceFor:(int)numberOfSeconds; @end
  • 11. • Class declaration starts at @interface and ends at @end • Cat is the class name that is the name after @interface and before “:” • NSObject is the name of the super-class • numberOfEyes, lengthOfMyCat, name, breed are attributes of a Class object. • drinkMilk and makeACatDanceFor: are methods that a an object of Cat (class) can respond to.
  • 12. Object Allocation Cat *myCat = [[Cat alloc] init]; // what exactly happens // 1st line allocates enough memory to hold a cat object Cat *myCat = [Cat alloc]; // 2nd line initializes the object. [myCat init];
  • 14. Message Passing in Obj-C • In other languages you refer this as method calling. But due to the nature of Obj-C it’s often referred as a message (can refer it as method or function) being passed to an object to make it do something. • A message is passed to an object with-in square brackets. [objectName messageName]; • Messages can be piped together. That is a message can be passed to an object is the result of another message. [[objectName messageOne] messageTwo];
  • 15. Message Passing Syntax The @implementation Sec ny arguments. In Chapter 7,“More on Classes,” you’ll see how methods that take than one argument are identified. method type return type method name Figure 3.1 method takes argument argument type argument name Declaring a method @implementation Section ed, the @implementation section contains the actual code for the methods you ed in the @interface section.You have to specify what type of data is to be store objects of this class.That is, you have to describe the data that members of the cl
  • 16. Instance & Class Methods • Instance responds to instance methods (starts with -) -(id)init; -(void)sing; -(NSString *)description; • Class responds to class methods (starts with +) +(id)alloc; +(void)initEventWithEventName:(NSString *)eventName
  • 17. Message Passing • [receiver message]; • [receiver message:argument]; • [receiver message:arg1 andArg:arg2];
  • 19. Declared Properties • Provides a getter and a setter method
  • 20. Manual Declaration without Properties Refer to the SnailView.h and SnailView.m in SnailRun sample code #import <UIKit/UIKit.h> @interface SnailView : UIImageView { double animationInterval; NSString *snailName; } // manual declaration of methods -(NSString *)getSnailName; -(void)setSnailName:(NSString *)name; @end
  • 21. Manual Implementation without Properties // manual getter method -(NSString *)getSnailName { return snailName; } // manual setter method -(void)setSnailName:(NSString *)name { if (![name isEqualToString:snailName]) { snailName = name; } }
  • 22. Doing it using Properties @property (attributes) type name; Atomicity # atomic # nonatomic Writability, Ownership # readonly # strong, weak
  • 23. Properties @property (nonatomic, strong) NSString *snailName; @property int animationInterval; @property int animationInterval;
  • 25. Obj-C Classes • • • • • NSNumber, NSInteger NSString, NSMutableString NSArray, NSMutableArray NSSet, NSMutableSet NSDictionary, NSMutableDictionary
  • 26. object vs mutable object Mutable Object Object • • Readonly • However can be copied to another mutable object which can be modified. Original Object can not be modified • • Read-write Can add, update, delete original object
  • 27. Strings • Have seen glimpse of it in all our NSLog messages • • NSLog(@"Objective C is Awesome"); NSString *snailName = [[NSString alloc] init];
  • 28. Strings Methods [NSString stringWithFormat:@"%d", someInteger]; [NSString stringWithFormat:@"My integer %d", someInteger]; [snailName stringByReplacingOccurrencesOfString:@"N" withString:@"P"]; NSString *newString = [myString appendString:@"Another String"];
  • 29. NSNumbers NSNumber *animationDuration = [[NSNumber alloc] init]; NSNumber *animationDuration = [[NSNumber alloc] initWithBool:YES]; NSNumber *animationDuration = [[NSNumber alloc] initWithInt:1];
  • 30. NSNumbers // While creating NSNumbers NSNumber *myNumber; myNumber = @'Z'; myNumber = @YES; myNumber = @1; myNumber = @10.5; // While evaluating expressions NSNumber *myNewNumberAfterExpression = @(25 / 6);
  • 31. NSArray & NSMutableArray NSArray (read-only) • • Manage collections of Objects • • NSMutableArray (read write) NSArray creates static array Objects can be anything NSString, NSNumber, NSDictionary, even NSArray itself. NSMutableArray creates dynamic array NSArray *myArray = [[NSArray alloc] init]; NSArray *myArray = [[NSArray alloc] initWithObjects:Obj1, Obj2, nil]; NSArray *myArray = @[Obj1, Obj2];
  • 32. getting and setting values • Values are being accessed using array index • • myArray[2] // will return 3rd object. Index starts from 0 Value can be set by assigning an Object for an index • myArray[3] = @"some value"; // will set value for 4th element
  • 33. insertion & deletion • – count: • • – containsObject: • • Insert a given object at end of the array – insertObject:atIndex: • • Tells if a given object is present or not – addObject: • • returns number of objects currently in the array Insert an object at specified index – removeAllObjects: • Empties the array of all its elements
  • 34. Learn more about NSSet and NSDictionary
  • 36. Key Objects in iOS Apps Model Data Model Objects Data Model Objects Data Model Objects View Controller UIApplication Application Delegate (custom object) UIWindow Root View Controller Event Loop Data Model Objects Data ModelController Additional Objects Objects (custom) Custom Objects System Objects Either system or custom objects Data Model Objects Data Model Objects Views and UI Objects
  • 37. when app finishes launching - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ // window is being instantiated self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // view controller is being instantiated self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; // every app needs a window and a window needs a root view controller self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; }
  • 38. what is this view controller • It is the controller part of M-V-C • Every view controller has a view • Your custom view controllers are sub-class of UIViewController class. • Provides view-management model for your apps. • • Adjust the contents of views • • Re-size views Acts on-behalf of views when users interacts! Has view-event methods that gets called when view appears and disappears!
  • 39. View controller view events • – viewDidLoad: • • – viewDidUnload: • • When view is about to made visible – viewDidAppear: • • After view controller’s view is released or set to nil – viewWillAppear: • • Called after view has been loaded When view has been fully transitioned to screen – viewWillDisappear: and – viewDidDisappear: • The counter-part of above 2 methods.
  • 40. Managing View Rotations • – shouldAutoRotate • • • Whether auto-rotation is supported or not Returns a boolean value YES/NO or TRUE/ FALSE – supportedInterfaceOrientations • • Returns interface orientation masks – didRotateFromInterfaceOrientation • Notifies when rotation happens
  • 41. Sample Codes https://www.dropbox.com/s/wqcuusr9p2j913i/SampleCodes.zip • • • • • • HelloWorld - Combines two text from text field and display on a label SliderExample - Displays current value of a Slider Hashes - Displays the number of hashes and creates a geometric structue WeatherApp - Provides weather for a given day (hard coded values) SnailRun - Makes a snail move in a direction (try changing the direction value) MediaPlayer - Plays a local video file
  • 42. To learn more ... • • Objective C - Read Stephen Kochan’s Book • • • Play with Obj-C and iOS lessons from Code School Go through “iOS UI Element Usage Guidelines” in iOS Human Interface Guidelines to learn more about the various UI components available and their usage Watch iOS Development Videos & WWDC Videos Join the community “iOS Dev Scout” facebook group.