iOS 101 - Xcode, Objective-C, iOS APIs

  • Published on

  • View

  • Download

Embed Size (px)


Learn basics of Xcode, Objective-C syntax, Object allocation, message passing, category, core obj-c classes, how view-controllers work through some basic example apps.


<ul><li>1.iOS Programming - 101 Xcode, Obj-C, iOS APIs Subhransu Behera @subhransu</li></ul> <p>2. Xcode 3. Development Tools IB is built-in in Xcode 4Xcode IDEInterface Builder UI DesigniOS Simulator Simulate AppsInstruments Monitor Performance 4. Xcode IDE Editors // source editor &amp; UI editor Single window interface Automatic error identication and correction Assistance editing Source control 5. Navigation area Editor areaDebug areaUtility area 6. Run on Simulator or DeviceSwitch editors and views 7. Obj-C (Object Allocation) 8. 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 &amp; C++ codes with Objective C Primary language used by Apple for Mac OSX and iOS application development. 9. Objective C Class #import @interface Cat : NSObject { int numberOfEyes; oat lengthOfMyCat;}NSString *name; NSString *breed;-(void)drinkMilk; -(void)makeACatDanceFor:(int)numberOfSeconds; @end 10. 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. 11. Object Allocation Cat *myCat = [[Cat alloc] init]; // what exactly happens // 1st line allocates enough memory to hold a cat objectCat *myCat = [Cat alloc]; // 2nd line initializes the object.[myCat init]; 12. Message Passing 13. Message Passing in Obj-C In other languages you refer this as method calling.But due to the nature of Obj-C its 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]; 14. Message Passing SyntaxThe @implementation Secny arguments. In Chapter 7,More on Classes, youll see how methods that take than one argument are identified.method typereturn typemethod nameFigure 3.1method takes argumentargument typeargument nameDeclaring a method@implementation Sectioned, 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 15. Instance &amp; 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 16. Message Passing [receiver message]; [receiver message:argument]; [receiver message:arg1 andArg:arg2]; 17. Objective-C Properties 18. Declared Properties Provides a getter and a setter method 19. Manual Declaration without Properties Refer to the SnailView.h and SnailView.m in SnailRun sample code#import @interface SnailView : UIImageView { double animationInterval; NSString *snailName; } // manual declaration of methods -(NSString *)getSnailName; -(void)setSnailName:(NSString *)name; @end 20. Manual Implementation without Properties // manual getter method -(NSString *)getSnailName { return snailName; } // manual setter method -(void)setSnailName:(NSString *)name { if (![name isEqualToString:snailName]) { snailName = name; } } 21. Doing it using Properties @property (attributes) type name;Atomicity # atomic # nonatomicWritability, Ownership # readonly # strong, weak 22. Properties @property (nonatomic, strong) NSString *snailName; @property int animationInterval; @property int animationInterval; 23. Core Obj-C Classes 24. Obj-C Classes NSNumber, NSInteger NSString, NSMutableString NSArray, NSMutableArray NSSet, NSMutableSet NSDictionary, NSMutableDictionary 25. object vs mutable object Mutable ObjectObject ReadonlyHowever can be copied to another mutable object which can be modied.Original Object can not be modied Read-write Can add, update, delete original object 26. Strings Have seen glimpse of it in all our NSLog messages NSLog(@"Objective C is Awesome"); NSString *snailName = [[NSString alloc] init]; 27. Strings Methods [NSString stringWithFormat:@"%d", someInteger]; [NSString stringWithFormat:@"My integer %d", someInteger]; [snailName stringByReplacingOccurrencesOfString:@"N" withString:@"P"]; NSString *newString = [myString appendString:@"Another String"]; 28. NSNumbers NSNumber *animationDuration = [[NSNumber alloc] init]; NSNumber *animationDuration = [[NSNumber alloc] initWithBool:YES]; NSNumber *animationDuration = [[NSNumber alloc] initWithInt:1]; 29. NSNumbers // While creating NSNumbers NSNumber *myNumber; myNumber = @'Z'; myNumber = @YES; myNumber = @1; myNumber = @10.5; // While evaluating expressions NSNumber *myNewNumberAfterExpression = @(25 / 6); 30. NSArray &amp; NSMutableArray NSArray (read-only) Manage collections of Objects NSMutableArray (read write)NSArray creates static arrayObjects can be anything NSString, NSNumber, NSDictionary, even NSArray itself.NSMutableArray creates dynamic arrayNSArray *myArray = [[NSArray alloc] init]; NSArray *myArray = [[NSArray alloc] initWithObjects:Obj1, Obj2, nil]; NSArray *myArray = @[Obj1, Obj2]; 31. getting and setting values Values are being accessed using array index myArray[2] // will return 3rd object. Index starts from 0Value can be set by assigning an Object for an indexmyArray[3] = @"some value"; // will set value for 4th element 32. insertion &amp; 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 arrayInsert an object at specied index removeAllObjects:Empties the array of all its elements 33. Learn more about NSSet and NSDictionary 34. View Controllers 35. Key Objects in iOS Apps Model Data Model Objects Data Model Objects Data Model ObjectsViewControllerUIApplicationApplication Delegate (custom object)UIWindowRoot View Controller Event Loop Data Model Objects Data ModelController Additional Objects Objects (custom)Custom Objects System Objects Either system or custom objectsData Model Objects Data Model Objects Views and UI Objects 36. when app nishes launching - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ // window is being instantiatedself.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // view controller is being instantiatedself.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; // every app needs a window and a window needs a root view controllerself.window.rootViewController = self.viewController;[self.window makeKeyAndVisible]; return YES; } 37. what is this view controller It is the controller part of M-V-CEvery view controller has a viewYour custom view controllers are sub-class of UIViewController class.Provides view-management model for your apps. Adjust the contents of views Re-size viewsActs on-behalf of views when users interacts!Has view-event methods that gets called when view appears and disappears! 38. View controller view events viewDidLoad: viewDidUnload: When view is about to made visible viewDidAppear: After view controllers view is released or set to nil viewWillAppear: Called after view has been loadedWhen view has been fully transitioned to screen viewWillDisappear: and viewDidDisappear:The counter-part of above 2 methods. 39. 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 didRotateFromInterfaceOrientationNoties when rotation happens 40. Sample Codes HelloWorld - Combines two text from text eld 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 le 41. To learn more ... Objective C - Read Stephen Kochans Book Play with Obj-C and iOS lessons from Code SchoolGo through iOS UI Element Usage Guidelines in iOS Human Interface Guidelines to learn more about the various UI components available and their usageWatch iOS Development Videos &amp; WWDC Videos Join the community iOS Dev Scout facebook group. 42. ThanksSubhransu Behera @subhransu </p>