This document provides an overview of iOS programming using Xcode and Objective-C. It discusses Xcode development tools like Interface Builder and iOS Simulator. It covers the Xcode IDE, navigation, and running apps on the simulator or a device. It introduces Objective-C concepts like classes, objects, methods, and message passing. It discusses core Objective-C classes like NSString, NSNumber, NSArray, and NSDictionary. It also covers view controllers, the model-view-controller design pattern, and view controller lifecycle methods. Sample code projects are provided to demonstrate concepts like handling user interfaces and responding to user interactions.
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
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];
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
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.