Transcript iPhone_1

iPhone Seminar
2010 . 04 . 22 . 목
정보통신연구소 유승구 연구원
Rev. No. 1.2
Last modified: 2010/04/23
2015-04-13
NOVAPEX Mobile Co., LTD
Confidential
세미나 진행 방식
◈ 세미나 진행 세부 사항
1. iPhone 개발 주요 설명 (매주 금요일 오후 2시)
1. 소스 설명은 최소화
2. 이론과 개념을 중심으로 진행
2. iPhone 소스 분석 심화 내용 발표 (매주 화요일 근무 외 시간)
1. 자격증요리 요약집 프로젝트 기능 구현 설명
2. 예제 소스 리뷰
3. 과제 수행
Confidential
Revision Info.
Date
Revision
Description
2010/04/19
1.0
기본 안 작성
2010/04/20
1.1
iPhone OS 4.0 beta 특징점 추가
2010/04/21
1.2
세미나 목차 변경
Confidential
Agenda
◈ iPhone : application develop
1. iPhone
1. iPhone 개발 환경
2. iPhone 3GS, iPod touch 스펙
3. Xcode, Interface builder, iPhone simulator
4. Objective-C
2. iPhone OS
1. Mac OS Architecture & iPhone OS Software stack
2. iPhone OS overview
3. iPhone OS 3.2 to iPhone OS 4.0
4. App 개발시 고려해야 할 사항
참고 링크
4
Confidential
1-1. iPhone 개발환경
◈ 아이폰의 개발 환경
MAC : Intel Mac, MAC OS X 10.5 Leopard 이상(최신 SDK의 경우 10.6.2 SnowLeopard 이상)
- 아이폰 개발은 MAC OS 에서 이루어지기 때문에 MAC에 대해 기본적인 부분을 알고 있어야 한다.
TOOL
Xcode, Interface Builder,
Simulator
개발 언어
Objective-C
SDK
iPhone OS SDK
<아이폰 개발 환경>
이번 세미나에서는 학습을 위해 Mac 구입은 쉽지 않은 일이므로 VMware를 통한 가상 환경에서
iPhone 학습을 진행 한다.
5
Confidential
1-2. iPhone 3GS & iPod touch 3G Spec
◈ 아이폰의 스펙
출시일
iPhone 3GS
iPod touch 3G
2009. 6. 19
2009. 9. 9
CPU
600Mhz (833MHz) ARM Cortex A8
GPU
PowerVR SGX
L1 캐시
32KB l-Cash + 32KB D-Cache
L2 캐시
256 KB
메모리
256 MB DRAM
카메라
3M pixel
N/A
GPS
YES
N/A
Wi-Fi 네트워크
YES
가속도 센서
YES
Bluetooth
Bluetooth 2.1 + EDR
Tri band
UMTS/HSD
PA(850, 1900,2100Mhz)
7.2Mbps
HSDPA
망
Nike + iPod
N/A
YES
무게
135g
스크린 해상도
115g
3.5인치 480 x 320, 163ppi
6
Confidential
1-3. XCode, Interface Builder, iPhone Simulator
◈ 아이폰 개발 TOOL
Xcode
애플에서 제공하는 통합 개발환경(IDE, Integrated Development Environment)
오픈 소스 개발 도구(GCC, javac, jikes, GDB)의 강력한 사용자 인터페이스를 제공한다. 개발자는 Xcode
를 이용하여 소스 코드를 작성하고 관리할 수 있으며 코드의 성능을 검사 할 수 있다.
Interface Builder
코코아 애플리케이션의 사용자 인터페이스를 쉽고 효과적으로 작성하기 위한 애플의 그래픽 편집기로
interface Builder에 미리 정의된 요소들을 Drag & Drop을 통해 사용자 인터페이스를 제작할 수 있다.
iPhone Simulator
Mac 데스크톱상에서 가상의 아이폰 장치를 제공한다. 아이폰이나 아이팟 터치가 없더라도 아이폰 시뮬
레이터를 통해 손쉽게 실행, 검사, 디버깅을 할 수 있다.
7
Confidential
1-3. XCode, Interface Builder, iPhone Simulator
◈ Xcode
Xcode
애플에서 제공하는 통합 개발환경(IDE, Integrated Development Environment)
8
Confidential
1-3.Interface Builder
◈ Interface Builder
Interface Builder
9
Confidential
1-4. Objective-C
◈ Objective-C
Mac OS X의 코코아(Cocoa) 애플리케이션 프레임워크의 표준 프로그래밍 언어로 쓰이고 있다.
※ 주요 특징점
• 기존 C에 최소한의 확장으로 객체지향 프로그래밍 기능을 추가
• Dynamic Runtime을 제공
• 표준 C/C++를 Objective-C 코드와 결합할 수 있다.
• Model-View-Controller (MVC) 모델을 사용
10
Confidential
1-4. Objective-C
◈ MVC 의 개념
모델에 정의된 Data를 변경
화면갱신에 필요한 Data를 전달
Controller
전달 받은 Data를 표시
Data공간
Model
View
객체 지향 프로그램의 디자인 모델인 Model View controll(MVC) 디자인 패턴으로 코코아 터치 프레임워크의 근간임.
Model : 애플리케이션 데이터를 저장, 이 데이터를 조작하는 로직을 정의
View : 사용자 인터페이스 (윈도우 버튼)에서 볼 수 있는 객체들의 집합
Controller : 모델과 뷰를 조율하는 역할을 한다.
최상위 레벨의 API인 코코아가 MVC에 맞춰 디자인 되어있음 우리의 프로젝트의 시작은 최상위 레벨에서 시작되기 때
문에 MVC 모델을 지켜줘야 확장이 용이하고 유지 보수가 편해진다.
11
Confidential
1-4. Objective-C
◈ Objective-C
메세징(함수 호출)
오브젝티브-C의 함수 호출은 대괄호 ([ ])를 사용한다.
함수 원형 : DrawMyGradient(보여질 Stage, 칠해질 모양, 시작 값, 끝 값, 투명설정);
# C 코드
DrawMyGradient(myView, aquaGradient, 0.0, 1.0, YES);
# C++ 코드
myView->drawGradient(aquaGradient, 0.0, 1.0, YES);
#Objective-C
[myview drawGradient:aquaGradient fromValue:0.0 toValue:1.0 opaque:YES];
12
Confidential
1-4. Objective-C
◈ Objective-C
객체 정의 (헤더파일)
# Objective-C, Header file
# C++, Header file
@interface Person {
class Person{
private:
NSString *name;
CString *name;
}
public:
- (void)singASong;
- (NSSring *)name;
void singASong();
- (void)setName:(NSString *)newName;
CString *name();
@end
void setName(CString * newName);
}
13
Confidential
1-4. Objective-C
◈ Objective-C
객체 정의 (소스파일)
# Objective-C, Source file
# C++, Source file
#import "Person.h"
#include "Person.h"
@implementation Person
void person::singASong()
- (void)singASong
{
cout << "singASong" << endl;
{
}
NSLog(@"%@",__FUNCTION__);
}
CString *person::name()
- (NSSring *)name
{
cout << "name" << endl;
{
}
NSLog(@"name");
}
void person::setName(CString * newName)
- (void)setName:(NSString *)newName
{
cout << "setName" << endl;
{
}
NSLog(@"setName");
}
@end
14
Confidential
2. iPhone OS
◈ Mac OS Architecture & iPhone OS software stack
아이폰 OS는 Mac OS와 구조적인 특성은 같지만 Mac의 전체적인 구조를 스마트폰 계열의 아이폰에게 가져가기에는 너무
크기 때문에 이러한 기반을 구성하는 라이브러리의 대부분을 스마트폰에 필요한 것만 추출하고 최적화 하였다.
15
Confidential
2. iPhone OS
◈ iPhone OS Overview
Core OS : FreeBSD 기반의 Unix 운영체제를 기반으로 함 (C기반)
Core Services : iPhone OS의 기본적인 서비스를 제어 (C기반)
- 코어 파운데이션과 파운데이션(Core Foundation & Foundation)
- 코어 로케이션 (Core Location), 코어 데이터 (Core Data)
- 어드레스 북(Address Book), 스토어 킷(Store Kit)
Media : 2D/3D/Audio/Video를 서포트 하는 기술 지원 (C와 Objective-C의 혼합 기반)
- 코어 그래픽스(Core Graphics), OpenGL ES
- 쿼츠 코어(Quartz Core), 오디오 툴박스(Audio Toolbox), 오디오 유닛(Audio Unit),
- AV 파운데이션(AVFoundation), OpenAL
Cocoa Touch : iPhone OS에서 최상위 레벨로 UIKit 프레임워크가 존재 (Objective-C 기반)
- 주로 화면 표시를 담당하는 View 오브젝트들과 버튼 같은 Control들로 구성되어있다.
개발자가 하위 레벨 기술의 사용을 고려해야 할 때는 오직 상위 레이어가 제공하지 않는 부분을 커버해야 할 때!
16
Confidential
2. iPhone OS
◈ iPhone OS Core Service
Core Services : iPhone OS의 기본적인 서비스를 제어 (C기반)
- 코어 파운데이션과 파운데이션(Core Foundation & Foundation)
: 파일 액세스, 봉쥬르 서비스(네트워크)를 이용, 네트워크 소켓, 런 루프에 대한 접근 등이 제공됨
- 코어 로케이션 (Core Location)
: 사용자의 위치 정보를 위도, 경도, 고도 값으로 제공하는 서비스, 위치를 찾기 위해 모바일 사업자의 셀타워,
GPS 그리고 위치 등록된 wi-fi를 함께 이용한다.
- 코어 데이터 (Core Data)
: DB 엔진으로 애플리케이션의 기본적인 기능인 저장과 취소 관리를 해주며 sqlite(오픈소스 파일 DB)형식으로 데이터를
저장할 수 있다. 모바일 용 애플리케이션의 수준을 뛰어넘는 DB를 쉽게 만들 수 있도록 해주는 프레임 워크이다.
- 어드레스 북(Address Book)
: 사용자의 주소록에 접근할 수 있는 API.
- 스토어 킷(Store Kit)
: 애플리케이션 내에서 컨텐츠를 구매 할 수 있도록 하는 API.
17
Confidential
2. iPhone OS
◈ iPhone OS Media
Media : 2D/3D/Audio/Video를 서포트 하는 기술 지원 (C와 Objective-C의 혼합 기반)
- 코어 그래픽스(Core Graphics)
: 2차원 그래픽스 라이브러리, 선, 원, 사각형 같은 기본적인 도형에서 부터 다각형, 베지어 곡선을 그리거나 패턴,
그라데이션으로 공간을 채울 수 있다. (PDF 문서도 가능)
- OpneGL ES
: 오픈소스 라이브러리인 OpenGL의 임베디드 시스템 버전이다. 아이폰 초기 모델 부터 OpenGLES 1-1을 지원했으며
아이폰 3GS 부터 OpenGL ES 2.0을 지원한다.
- 쿼츠 코어(Quartz Core)
: 코어 애니매이션은 아이폰의 엔진으로 다이나믹한 UI 의 기반 기술. 레이어 기반의 API로서 그래픽스 가속기를
직접 활용하기 때문에 가볍고 빠르다.
- 오디오 툴박스(Autio ToolBox)
: 오디오의 재생과 녹음 기능을 제공하는 로우레벨 C API이다.
- AV 파운데이션 (AVFoundation)
: 오디오 툴박스의 사용이 어려워 추가된 상위레벨의 API (Objective-C) 오디오 재생과 녹음이 쉽게 구현된다.
18
Confidential
2-1). iPhone OS 3.2 to iPhone OS 4.0
◈ iPhone OS 버전별 비교
iPhone OS 3.2
주요 기능
고려 사항
멀티 터치(MultiTouch)
백 그라운드 프로세스
가속도 센서(Accelerometer)
샌드박스(Sandbox)
애니매이션(Animation)
메모리 낭비
위치 정보 이용(Core Location)
배터리 낭비
3차원 그래픽(OpenGL ES)
응답지연
블루투스 통신 (GameKit)
컨텐츠 판매(StoreKit)
19
Confidential
2-1). iPhone OS 3.2 to iPhone OS 4.0
◈ iPhone OS 버전별 비교
iPhone OS 4.0 beta 2
개선되거나 추가된 기능들
Fast Apps switching
Calendar Access
기존 기능 개선(Upgrade)
Multi Tasking
카메라 API 개선
Folder
보안강화
iBooks
한번에 Apps 2,160개 소유 가능
Game center(소션 게이밍 네트워크)
iAD
Mail
iPhone OS 4.0 SDK Beta 버전이 현재 유료 개발자에게 제공되고 있으며 자세한 사항은 해당 API를 참고 해야 함.
베타버전이기 때문에 정식 버전이 나오기 전까지는 내용이 변할 수 있다.
iPhone OS 4의 호환성 : iPhone 3G, iPhone 3GS에 적용되며, 멀티태스킹은 2009년 5월 하반기 출시 모델에 적용됨
20
Confidential
2-2). Apps 개발시 고려해야 할 사항
◈ Apps 의 종류
아이폰 앱의 종류를 성격에 따라 분류하면 다음과 같이 세가지로 나뉜다. 이렇게 나뉘어진 타입이 모든 애플리케이션
을 구분하는 기준은 아니며 애플리케이션은 점점 다양해지고 복잡해지고 있다.
프러덕티비티(Productivity) 타입
생산적인 일을 하기 위한 애플리케이션으로 주로 데이터를 다루게 되며 데이터의 계층(하이어라키, hierarchy) 만큼의
뷰 계층을 가지고 있다. (Ex 메일 프로그램) UIKit에서 제공하는 기본 컨트롤을 많이 사용한다.
유틸리티(Utility) 타입
종합적인 정보를 빠르게 보여주기 위한 애플리케이션으로 날씨나 주식정보 같은 애플리케이션이 있다.
컨텐츠를 사용자에게 효과적으로 보여 줄 수 있는 그래픽을 만드는 것이 핵심이다.
임머시브(Immersive) 타입
게임, 미디어 플레이어 같은 전체화면을 사용하는 어플리케이션. UIKit의 오브젝트를 사용할 기회가 타 애플리케이션
에 비해 많지 않다.
21
Confidential
2-2). Apps 개발시 고려해야 할 사항
◈ Apps 개발시 참고 사항
샌드박스
아이폰 앱은 특정한 폴더구조 안에 있는 파일만 엑세스가 가능하다. 자신의 리소스만이 접근이 가능하고 타 Apps의
리소스는 사용이 불가능하다.
메모리, 베터리 낭비
iPhone 3GS는 256MB의 메모리 (wired : 40MB, Active:27MB, Inactive 15MB. Free 130MB)로 하나의 Apps가 점유
할 수 있는 메모리가 충분하지 않다. 또한 GPS, 가속도 센서와 같은 외부 장치 사용은 평소에 전류가 흐르지 않던 곳으
로 전류를 흘려 보내야 하기 때문에 다른 프레임들 보다 전력 소모가 크다.
응답지연
워치독(Watch Dog) 타이머가 프로세스를 감시하다가 20초간 응답이 없으면 죽어버린 프로세스로 간주하고 강제 종료
시킨다. 20초 이상의 연산이 필요한 경우에는 별도 쓰레드를 통해 작업을 처리 한다. (UI 멈춤시 강제 종료)
멀티 태스킹
iPhone OS 4.0 부터 멀티 태스킹이 가능하지만 일정한 제한 하에서만 가능하기 때문에 제한 사항에 대한 이해가 필요
하다. (오디오, VoIP, 백그라운드 상태, Push Notification, Local Notification, 타스크 종료, 빠른 앱의 전환)
인터페이스 가이드라인
필수 문서로 아이폰 애플리케이션에 대한 디자인 가이드로 아이폰 UI 컨셉과 아이폰 애플리케이션으로서 반드시 지켜
야 할 규칙이 명시 되어있으며 개별 UI 컨트롤의 사용방식도 나와있다.
22
Confidential
참고 링크
[타 OS의 환경구축]
리눅스 개발환경 구축 : http://blog.kukyakya.pe.kr/entry/리눅스에서-아이팟터치아이폰-개발환경-구성
[iPhone OS 4.0]
Apple iphone developer site : http://developer.apple.com/technologies/iphone/whats-new.html
[샌드박스]
두산백과사전 : http://100.naver.com/100.nhn?docid=784162
위키백과사전 : http://en.wikipedia.org/wiki/Sandbox
23
Confidential
마무리
감사합니다.
24
Confidential