iphone development

84
iPhone Development 박박박 [email protected]

Upload: josef

Post on 25-Feb-2016

45 views

Category:

Documents


1 download

DESCRIPTION

iPhone Development. 박종화 [email protected]. Contents. Requirements iOS SDK iOSOverView Objective-C Design Pattern App Dev Cycle QA. Trend. Smartphone OS. Smartphone OS. Why?. Differences. Only One Running Application Only One Window Limited Access Limited Response Time - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: iPhone Development

iPhone Development

박종화[email protected]

Page 2: iPhone Development

Contents•Requirements•iOS SDK•iOSOverView•Objective-C•Design Pattern•App Dev Cycle•QA

Page 3: iPhone Development

Trend

Page 4: iPhone Development

Smartphone OS

Symbian Research In Motion

Android iOS Microsoft Windows Mobile

Linux Other OSs

CE/ 표준

CE/ 표준

CE/ 표준

CE/ 표준CE/ 표준

CE/ 표준CE/ 표준

CE/ 표준

CE/ 표준 CE/ 표준CE/ 표준

CE/ 표준 CE/ 표준 CE/ 표준

2009 2010

Page 5: iPhone Development

Smartphone OS

Symbian41%

Research In Motion18%

Android17%

iOS14%

Microsoft Windows Mobile

5%Linux2%

Other OSs2%

Page 6: iPhone Development

Why?

Page 7: iPhone Development

Differences•Only One Running Application•Only One Window•Limited Access•Limited Response Time•Limited Screen Size•Limited System Resources•No Garbage Collection

Page 8: iPhone Development

Requirements

Page 9: iPhone Development

Requirements•Intel Based Snow Leopard•iPhone or iPod Touch•Xcode•iOSSDK•Objected Oriented Concepts

Page 10: iPhone Development

Hardware

Page 11: iPhone Development

Hardware

Page 12: iPhone Development

Hardware

Page 13: iPhone Development

Hardware

Page 14: iPhone Development

Software

Page 15: iPhone Development

Developer Programs

•iOS Developer – Individual ($99/year)

•iOS Developer – Enterprise ($299/year)

•iOS Developer – Student ($0)

Page 16: iPhone Development

iPhone Platform•ARM Processor(Samsung, Apple)•512MB RAM (iPhone4)•BSD UNIX•Mach kernel•COCOA APIs

Page 17: iPhone Development

iOS SDK

Page 18: iPhone Development

SDK Tools

•Frameworks•Xcode Tools•iPhone Simulator•iPhone Reference Library

Page 19: iPhone Development

Frameworks•Apple delivers most of its system

interfaces in special packages called frameworks.

•A framework is a directory that contains a dynamic shared library and the resources need to support that library

Page 20: iPhone Development

Frameworks

Page 21: iPhone Development

Xcode Tools

Xcode Interface Builder Instruments

Page 22: iPhone Development

Xcode

Page 23: iPhone Development

Interface Builder

Page 24: iPhone Development

Instruments

Page 25: iPhone Development

Xcode Tools •GCC compiler 4.2•Support for Obj-C, C++, Java,

Python and Ruby (iPhone only uses Obj-C & C++)

•Code editor with code completion•Support for SVN and CVS

Page 26: iPhone Development

Interface Builder

•Tool for laying out interfaces•Separate Tool from Xcode•Bind Actions and Outlets in

Controllers

Page 27: iPhone Development

Simulator

Page 28: iPhone Development

Simulator

Page 29: iPhone Development

Simulator

Page 30: iPhone Development

iOS OverView

Page 31: iPhone Development

iOS 4.1•Multitasking•Folders•Threaded email•iBooks•Game Center•Not support Flash or Java

Page 32: iPhone Development

iOS

Core OSOSX Kernel

Power Management

Mach 3.0 Keychain AccessBSD CertificatesSockets File SystemSecurity Bonjour

Core OS

Core Services

Media

Cocoa Touch

Page 33: iPhone Development

iOS

Core ServicesCollections Core LocationAddress Book Net Services

Networking ThreadingFile Access PreferencesSQLite URL Utilities

Core OS

Core Services

Media

Cocoa Touch

Page 34: iPhone Development

iOS

MediaCore Audio JPEG, PNG, TIFFOpenAL PDFAudio Mixing Quartiz (2D)Audio Recording Core Animation

Video Playback OpenGL ESCore OS

Core Services

Media

Cocoa Touch

Page 35: iPhone Development

iOS

Cocoa TouchMulti-Touch AlertsCore Motion Web ViewView Hierarchy Map KitLocalization Image PickerControls CameraCore OS

Core Services

Media

Cocoa Touch

Page 36: iPhone Development

Application Life Cycle

Page 37: iPhone Development

Event-Handling

Page 38: iPhone Development

Interruptions

Page 39: iPhone Development

Main.m#import <UIKit/UIKit.h>

int main(int argc, char *argv[]){

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];int retVal = UIApplicationMain(argc, argv, nil, nil);[pool release];return retVal;

}

Page 40: iPhone Development

Performance•Do Not Block the Main Thread•Use Memory Efficiently•Floating-Point Math Considerations•Reduce Power Consumption•Tune Your Code• Improve File Access Times•Tune Your Networking Code

Page 41: iPhone Development

Objective-C

Page 42: iPhone Development

OO Terms• Class• Instance• Message• Method• Instance Variable• Inheritance• Superclass/Subclass• Protocol

Page 43: iPhone Development

History

Page 44: iPhone Development

Objective-C•Somewhere in-between C++ and Java•Created by Brad Cox & Tom Love• Invented in 1980’s for Next Computing•Based on C with SmallTalk like extentions•Used in COCOA, OpenStep and GNUStep•Class based OO language

Page 45: iPhone Development

Objective-C• 객체를 중심으로 작성

• 객체는 데이터와 데이터를 조작하는 동작으로 이루어진다 .

• 동작을 객체의 method, 객체의 데이터를 instance variable

• Objective-C 는 동적인 언어로서 실행시에 객체나 매소드가 변할 수 있다 .

Page 46: iPhone Development

Class Interface#import <UIKit/Uikit.h>

@interface HelloWorldViewController : UIViewController {//Instance Variable

UIButton button;UILabel *label;}//property@property (nonautomatic, retain) IBOutletUILabel *label;

//method-(IBAction)sayHello:(id)sender;@end

Page 47: iPhone Development

Class Implementation

#import “HelloWorldViewController.h”

@implementation HelloWorldViewController@synthesize label;

-(IBAction) sayHello:(id) sender {label.text = @”Hello, World”;}

-(void)viewDidLoad {}

- (void)dealloc { [label release];

[super dealloc];}@end

Page 48: iPhone Development

Class Allocation

•HelloWorldViewController *obj = [[HelloWorldViewControlleralloc] init];

Page 49: iPhone Development

Property• 인스턴스 변수에 대한 접근자메소드의 구현의

편리

label - gettersetLabel: - setter

• @synthesize• Dot Syntax

label.text = @”Hello, World”;[label setText:@”Hello, World”];

Page 50: iPhone Development

Properties•Readonly•Retain•Readwrite•Copy•Assign

Page 51: iPhone Development

Calling Methdos[anObjectsomeMethod];[anObjectsomeMethod:

anotherObject];[anObjectsomeMethod:

anotherObjectwithAnotherArgument: yetAnotherObject]

Page 52: iPhone Development

Sending Messages• Objective-C 에서는 해당 객체에 메시지를

보낸다라고 표현한다 .• 객체에 메시지를 보내면 해당 메소드를

불러주는 구조

• Receiver may be nil(null)

Page 53: iPhone Development

Memory Management

•C used methods like malloc and free

•C++ used methods like new and delete

•Objective-C uses retain pool•Garbage Collection on the Mac, but

not on the iPhone

Page 54: iPhone Development

Creating ObjectsNSString *string = [[NSStringalloc] init];

-> You are responsible for releasing the memory

NSString *string = [NSStringstringWithString:@”Hello”];-> The object will be autoreleased.

Page 55: iPhone Development

Reference Counting

•An Object knows how many times it is referenced

•Manually managed or through the autorelease pool

•As soon as it falls to 0, the destructor dealloc is automatically called

Page 56: iPhone Development

alloc-retain-release

alloc+1

retain+1

release-1

release-1

Page 57: iPhone Development

Memory Management

•NSString *name = [[NSStringalloc] init];

•[name retain];•[name release];•[name autorelease];

Page 58: iPhone Development

Obj-C Vs C++

Page 59: iPhone Development

Obj-C vs C++

Page 60: iPhone Development

Obj-C vs C++

Page 61: iPhone Development

Obj-C vs C++

Page 62: iPhone Development

Obj-C vs C++

Page 63: iPhone Development

Obj-C vs C++

Page 64: iPhone Development

Obj-C vs C++

Page 65: iPhone Development

Design Pattern

Page 66: iPhone Development

MVC

View Model

Controller

Page 67: iPhone Development

MVC

•Model•모델은 앱 상태 ( 및 데이터 ) 를

관리하며 , 데이터 영속성을 제공하기도 한다 . 이것은 완전히 UI와는 분리되어 있으며 사용자에게 직접 드러나지 않는 부분이다 .

Page 68: iPhone Development

MVCView•사용자가 실제로 보는 부분이며 ,

사용자에게 모델을 보여준다 . 뷰를 통해서 사용자가 데이터를 변경하도록 하며 이벤트를 생성하게 하거나 이벤트에 응답하도록 한다 . 인터페이스 빌더 또는 프로그램 코드에 의해서 생성할 수 있다 .

Page 69: iPhone Development

MVC•Controller•사용자 입력 때문에 데이터가

변경되거나 데이터가 변경되어 사용자에게 변경된 데이터를 보여주려고 할 때 , 뷰와 모델을 연결 및 중재하는 역할을 한다 . 이 컨트롤러에서 앱의 처리 논리를 구현한다 .

Page 70: iPhone Development

Delegation

•다른 객체를 대신해서 책임지고 어떠한 일을 해주는 클래스

UIAccelerometerDelegate

(the delegator)MainController(the delegate)

Moving

Page 71: iPhone Development

Delegation•Control passed to delegate objects

to perform application specific behavior

•Avoids need to subclass complex objects

•Many UIKit classes use delegates

Page 72: iPhone Development

Target-Action

•Button Touch – Message send

Page 73: iPhone Development

App Dev Cycle

Page 74: iPhone Development

Development Cycle

IdeaCheckDevelopSubmit

Page 75: iPhone Development
Page 76: iPhone Development

Prototype

Create a Mockup http://iphonemockup.lkmc.ch

Page 77: iPhone Development

Prototype

Page 78: iPhone Development

Coding

1 Vs N

Page 79: iPhone Development

Resources

•Images•Sounds•Strings•Database

Page 80: iPhone Development

Test

•DogFooding•Friend•…..

Page 81: iPhone Development

Distribution

Page 82: iPhone Development

Upload

Page 83: iPhone Development

Upload

Page 84: iPhone Development

Questions?