Ios development

48
iOS Development Md. Shakil Ahmed Software Engineer Astha it research & consultancy ltd. Dhaka, Bangladesh 16 th October 2011

description

Ios development

Transcript of Ios development

Page 1: Ios development

iOS Development

Md. Shakil AhmedSoftware Engineer Astha it research & consultancy ltd.Dhaka, Bangladesh

16th October 2011

Page 2: Ios development

Introduction

Topic Focus:- What is iOS & iOS Development?- iOS Dvelopment tools- Creating a new iOS application.- Getting Familiar with Xcode and iOS SDK- Delegate - Objective C- Memory Management- Crash Reports- iPhone frameworks

Page 3: Ios development

What is iOS & iOS Development?

• iOS stands for iPhone Operating System• iOS made for iPhone, iPod Touch & iPad• iOS development is developing applications

for iOS Devices.

Page 4: Ios development

iOS Application

There is three ways to do mobile applications• Mobile Web Interface • Develop by Flash• Develop by the native platform

Page 5: Ios development

Mobile Web Applications

• This application is mostly connected, so most of the time user can’t handle it without internet or cached history

• Javascript provides reach function to access some hardware like GPS and other devices specific hardware

• Developer doesn’t have much authority over the device, tied by the browser.

Page 6: Ios development

Flash

• Can be used if the application is all about interface

• currently flash can be used to act like real application, it has access to camera, GPS... Etc

• Performance in not good like the native platform.

Page 7: Ios development

Native Applications

• You can do what ever you want to do, except what the framework doesn’t allow you to do.

Page 8: Ios development

Smartphone OS Market Share, Q4 2010

Page 9: Ios development
Page 10: Ios development
Page 11: Ios development

Needed to develop for iPhone

• Knowledge of Objective C• Mac OS X Intel based machine• iPhone Development tools• iPhone or iPod touch

Page 12: Ios development

iPhone Development tools

• Xcode

Page 13: Ios development

Create New Application

1. Open Xcode.2. Select File→New Project.3. In the dialog that opens, select iPhone OS, then

View-Based Application and click Choose.4. Name the project “HelloWorld” and click Save.5. At this point, you can build and run (click the

Build and Go icon in the toolbar). The HelloWorld application shows only a blank gray screen when run in the Simulator.

Page 14: Ios development

Create New Application

Page 15: Ios development

Xcode

Page 16: Ios development

Xcode

• Compiled Code -> your's and framework's

• Nib – files: UI--‐elements

• Resources: images, sounds.

• Info.plist – file: app configuraIon

Page 17: Ios development

info.plist

Page 18: Ios development

Info.plist in Xcode

Page 19: Ios development

nib-- file?‐

• Interface Builder is used for creating Uis• The interface is stored in a file .n/xib

– .nib = Next Interface Builder– .xib = new version (Interface Builder 3) of nib

• The xib file is xml!

Page 20: Ios development

nib-- file‐

Page 21: Ios development

Nib – files in Interface Builder

Page 22: Ios development

icons and images

Page 23: Ios development

Life Cycle

Page 24: Ios development

Design Pattern: Delegate

• Xcode project template has provided UIApplicaIonDelegate for you

• Can implement:- applicationDidFinishLaunching- applicationWillTerminate– applicationDidReceiveMemoryWarning

• One object sends periodically messages to another object specified as its delegate

Page 25: Ios development

Delegate#import <UIKit/UIKit.h>@interface HelloWorldAppDelegate : NSObject

<UIApplicationDelegate> {UIWindow *window;UITextField *mytextfield;}@property (nonatomic, retain) IBOutlet UIWindow *window;@property (nonatomic, retain) IBOutlet UITextField

*mytextfield;- (IBAction) userClicked: (id) sender;@end

Page 26: Ios development

Delegate

• nonatomic - single threaded application• retain - memory management• IBOutlet - variables to attach to Interface

Builder objects• IBAction - methods to attach to Interface

Builder actions

Page 27: Ios development

In Interface Builder

Page 28: Ios development

Delegate classes implementation#import "HelloWorldAppDelegate.h"@implementation HelloWorldAppDelegate@synthesize window;@synthesize mytextfield;- (IBAction) userClicked: (id) sender{NSString* text = [mytextfield text];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello“

message:text delegate:nil cancelButtonTitle:@"Ok“ otherButtonTitles:nil];

[alert show];[alert release];}

Page 29: Ios development

Delegate classes implementation- (void)applicationDidFinishLaunching:(UIApplication

*)application {// Override point for customization after application

launch[window makeKeyAndVisible];}- (void)dealloc {[window release];[super dealloc];}@end

Page 30: Ios development

Result

Page 31: Ios development

Objective C

• You can consider it Extension for C language• ObjC add more dynamicity to C Language• Single inheritance from super class and

protocols is used as interfaces• Totally new syntax but still can use C with it.

Page 32: Ios development

Objective C

New concepts– Class definition– Protocol implementation– Class messages– Many more …

Page 33: Ios development

Classes and Objects

• Classes declare the state and behavior• State (class data) is instance variables• Behavior is methods

Page 34: Ios development

Class and instance methods

• Instances responds to “Instance methods”1. -(id)init;2. -(char*)getName;

• Class responds to “Static methods”1. +(id)alloc;2. +(char*)getClassName;

Page 35: Ios development

Message syntax (calling methods)

• Function calling in Objective C called message, this is to give more dynamicity to the language, some times if the method is not implemented the calling result will be nil = null– [objectOfClass functionName];– [objectOfClass functionName:Arg1];

• Calling staic method– [Class functionName];– [Class functionName:Arg1];

Page 36: Ios development

Objective C

• Dot Syntax– It is only working in Objective C 2.0– It is only used for properties of object

• Dynamic Casting – Using type “id” , id is pointer to void “C Style

void*”– id object = [Class new];

• Static casting– Class* object = [Class new];

Page 37: Ios development

Objective C• nil is equivalents to null • Objective C Class has no operators overloading• Objective C Class has no constructors or destructors• Boolean type is, BOOL

– YES is TRUE– NO is FALSE

Page 38: Ios development

Memory Management

Rules :You only release or autorelease objects you

own.• If you own the object by alloc, copy or retain,

you have to release or autorelease• If the object is not owned by you, don’t call

release or autorelease

Page 39: Ios development

Memory Management

Page 40: Ios development

Memory Management

Local Variable• Always release or autorelease in the same

scope

Page 41: Ios development

Crash Reports

Page 42: Ios development

Crash Types

• EXC_BAD_ACCESS (SIGBUS or SIGSEGV)• EXC_CRASH (SIGABRT)• Low Memory• 00000020

Page 43: Ios development

iPhone frameworks• Foundation • UIKit• CoreGrphics• CFNetwork• CoreLocation• CoreData• ExternalAccessory• GameKit

MapKit

IOKit

MediaPlayer

AddressBook

MobileCoreSerivces

OpenGL

Security

StoreKit

And many more

Page 44: Ios development

CoreData

Page 45: Ios development

Core Location & MapKit

Page 46: Ios development

Multitasking

• Available in iOS 4.

Page 47: Ios development

iPhone Development

• It is true that Objective C is not as strong as any other language but the huge coverage of frameworks that is provided by Apple makes it Ok to use such SDK.

Page 48: Ios development

Thanks!