iOS 앱 개발에 필요한 프레임워크에 관하여 살펴보겠다.
앱 개발툴인 Xcode 에서 제공되는 중요한 프레임워크의 용도를 알아보는 것이 개발을 위한 필수 요건이기 때문이다.
Assets Library 프레임워크
어셋라이브러리 프레임워크는 iOS4.0부터 포함된 프레임워크로 사용자의 사진과 비디오를 쿼리 기반 인터페이스로 가져올 수 있다. 어셋라이브러리 프레임워크를 사용하여 사진앱이 관리하는 사진과 비디오(사용자가 앨범에 저장한 모든 사진과 비디오를 포함)에 접근할 수 있다. 또한 새로운 사진과 비디오를 사용자 앨범에 추가할 수도 있다.
AV Foundation 프레임워크
AV 파운데이션 프레임워크는 iOS2.2부터 포함된 프레임워크로 오디오 컨텐츠를 재생하는데 필요한 Objective-C클래스를 제공한다. 이 프레임워크를 사용하여 오디오 파일을 재생할 수 있으며 메모리에 로드된 사운드의 특정 구간의 임의 재생도 가능하다. iOS3.0부터는 오디오 녹음과 오디오 세션 관리 기능이 추가되었다. iOS4.0이후에는 아래와 같은 기능이 확충되었다.
- 미디어 어셋 관리
- 미디어 편집
- 무비 캡쳐
- 무비 재생
- 트랙 관리
- 미디어 아이템의 메타데이터 관리
- 입체 음향 패닝
- 사운드간의 정확한 동기화
- 사운드 파일의 데이터 형식, 샘플 레이트, 채널수 등을 파악하는 Objective-C 인터페이스 제공
Core Audio 프레임워크
코어오디오는 C언어 기반 인터페이스로 스테레오 기반 오디오의 관리를 지원한다. iOS 에서 코어오디오를 사용하여 오디오 생성, 녹음, 믹스, 재생 을 하 수 있다. 또한 코어 오디오를 사용하여 장치 진동 기능을 사용할 수 있다.
- CoreAudio.framework : 코어 오디오가 사용하는 오디오 데이터 타입을 정의한다.
- AudioToolbox.framework : 오디오 파일과 스트림의 재생 및 녹음 서비스를 제공한다. 이 프레임워크는 오디오 파일 관리, 시스템 경고 사운드 재생, 진동 기능을 제공한다.
- AudioUnit.framework : 오디오 프로세싱 모듈인 내장 오디오 유닛을 사용할 수 있도록 해 준다.
Core Graphics 프레임워크
코어그래픽스 프레임워크는 쿼츠2D 드로잉 API를 위한 인터페이스를 포함한다. 쿼츠는 벡터 기반 드로잉 엔진으로 Mac OS X의 것과 동일하다. 패쓰 기반 드로잉, 안티엘리어싱, 그레디언트, 이미지, 색상, 좌표공간 변환, PDF문서 생성, 보이기, 파싱 기능 등을 제공한다. C기반으로 작성되었지만 객체지향추상화를 바탕으로 설계되었다.
Core Text 프레임워크
코어텍스트 프레임워크는 iOS3.2부터 포함된 프레임워크로 텍스트 레이아웃과 폰트 처리를 위한 간결하고 고성능의 C언어 기반 인터페이스를 제공한다. 코어 텍스트 프레임워크는 완벽한 텍스트 레이아웃 엔진을 제공하여 화면상에 텍스트의 위치를 자유롭게 관리할 수 있다. 코어 텍스트가 관리하는 텍스트는 텍스트간에 다른 폰트와 렌더링 속성을 가질 수 있다. 코어텍스트 프레임워크는 문서편집기류의 앱 제작 지원을 위해 만들어졌다.
Core Video 프레임워크
코어비디오는 iOS4.0부터 포함된 프레임워크로 코어미디어를 위한 버퍼와 버퍼풀을 지원한다. 대부분의 앱은 이 프레임워크를 직접적으로 사용할 필요가 없을 것이다.
Image I/O 프레임워크
이미지I/O프레임워크는 iOS4.0부터 포함된 프레임워크로 이미지데이터와 이미지 메타데이터를 가져오고 내보내는 인터페이스를 제공한다. 이 프레임워크는 코어그래픽스 데이터 타입과 함수의 상위층으로 구성되어 있다. 따라서 iOS에서 사용가능한 표준 이미지 타입을 모두 지원한다.
Media Player 프레임워크
미디어 플레이어 프레임워크는 앱내에 포함된 오디오 및 비디오 재생의 고수준 인터페이스를 지원한다. iOS3.0에서는 사용자의 아이튜즈 라이브러에 접근하는 인터페이스가 추가 되었다. 따라서 뮤직 트랙 및 재생 목록을 재생할 수 있고 노래 검색 기능과 미디어 픽커 인터페이스를 사용할 수 있다. iOS3.2에서는 크기 조절이 가능한 뷰 내에서 비디오 재생이 가능하게 되었으며 비디오 재생을 위한 설정과 관리를 위해 다양한 인터페이스가 추가 되었다.
OpenAL 프레임워크
iOS 는 코어오디오 외에도 OpenAL(Open Audio Library)을 지원한다. OpenAL인터페이스는 오디오 재생을 위한 크로스 플랫폼 표준 인터페이스이다. 거리감, 공간감 있는 음향 출력이 필요한 게임이나 프로그램에서 OpenAL을 사용하여 고성능, 고품질 음향 효과를 구현할 수 있다.
OpenGL ES 프레임워크
OpenGL ES 프레임워크는 2D 또는 3D컨텐츠를 그리는 도구를 제공한다. C언어 기반 프레임워크로 높은 프레임률을 지원하는 풀스크린 게임 스타일앱 제작에 사용되며 하드웨어 성능에 영향을 많이 받는다. 항상 EAGL인터페이스와 결합하여 OpenGL프레임워크를 사용한다.
Quartz Core 프레임워크
쿼츠 코어 프레임워크는 코어 애니메이션 인터페이스를 포함한다. 코어애니메이션은 고급 애니메이션과 조합 기술로 복잡한 애니메이션과 비주얼 효과를 구현하기 위해 사용된다. 코어애니메이션은 고수준의 Objective-C인터페이스를 지원해 애니메이션과 효과를 구성할 수 있다. 코어애니메이션은 iOS의 많은 부분에 통합되어 있다. 예를 들어 UIKit의 UIView는 표준 시스템 행위를 위한 애니메이션을 제공한다. 또한 커스텀 애니메이션을 만들기 위해서도 코어 애니메이션을 사용할 수 있다.
MobileCoreService 프레임워크
모바일 코어 서비스는 iOS3.0부터 포함된 프레임워크로 저수준 데이터 타입에 대해 고유한 타입 식별자(UTI) 상수를 제공한다. UTI 는 앱과 앱, 디바이스와 디바이스 간에 데이터를 전송해야 할 때 필요하다.
SystemConfiguration 프레임워크
시스템 구성 프레임워크는 접근 가능성, 사용 가능성을 판단하는 인터페이스를 제공한다. 시스템 구성 프레임워크를 사용하여 장치의 네트워크 구성을 결정할 수 있다. 시스템 구성 프레임워크를 가장 자주 사용하는 예는 장치가 특정 호스트에 접근하는데 Wi-Fi 또는 전화망(3G)을 사용할 수 있는지 판단하는 루틴이다.
AddressBook 프레임워크
주소록 프레임워크는 사용자의 장치에 저장된 연락처 정보를 프로그래밍으로 접근할 수 있는 인터페이스를 제공한다. 주소록 프레임워크를 사용하여 사용자의 연락처 정보를 접근하고 수정할 수 있다. 예를 들어, 채팅앱에서 연락 가능한 친구 목록을 만들기 위해서 주소록 프레임워크를 사용할 수 있다.
QuickLook 프레임워크
퀵룩은 iOS4.0부터 포함된 프레임워크로 당신이 만든 앱이 지원하지 않는 파일의 미리보기 기능을 다이렉트로 지원한다. 네트워크에서 받은 파일이나 출처를 알 수 없는 파일의 미리보기를 지원하기 위해서 만들어진 프레임워크이다. 특정 파일에 미리보기를 하려면 이 프레임워크를 사용하여 파일의 내용을 보여주는 뷰컨트롤러를 만들면 된다.
StoreKit 프레임워크
스토어킷 프레임워크는 iOS3.0부터 포함된 프레임워크로 앱 내에서 추가 컨텐츠나 서비스를 구매할 수 있는 인터페이스를 제공한다.
EventKit 프레임워크
이 벤트킷 프레임워크는 iOS4.0부터 포함된 프레임워크로 사용자 장치의 저장된 캘린더 이벤트에 접근할 수 있는 인터페이스를 제공한다. 이 프레임워크를 사용하여 기존의 이벤트 데이터에 접근할 수 있고 새로운 이벤트를 사용자의 캘린더에 추가할 수도 있다. 캘린터 이벤트는 알람을 포함할 수 있으며 알람 규칙을 설정할 수도 있다.
CFNetwork 프레임워크
CFNetwork 프레임워크는 고성능의 C언어 기반 인터페이스로 여러 네트워크 프로토콜을 사용하기 위한 객체 지향 추상화를 제공한다. 이 추상화는 프로토콜 스택의 세세한 컨트롤을 제공하고 BSD소켓과 같은 저수준 구조를 쉽게 사용할 수 있게 해 준다. 이 프레임워크를 사용하여 FTP와 HTTP서버와 쉽게 통신할 수 있다. CFNetwork 프레임워크를 사용하여 아래의 내용을 수행할 수 있다.
- BSD소켓 사용
- SSL 또는 TLS를 사용하여 암호화된 연결 생성
- DNS호스트 리졸브(resolve)
- HTTP 통신,
- FTP 통신
- 봉쥬르 서비스 통신
Foundation 프레임워크
파운데이션 프레임워크는 코어 파운데이션 프레임워크의 기능을 Objective-C로 랩핑한 프레임워크이다. 파운데이션 프레임워크는 아래의 기능들을 지원한다.
- 데이터 컬렉션(배열, 집합, 사전 등)
- 번들
- 날짜 및 시간 연산
- 원시 데이터 블록(Raw data block) 처리
- 환경 설정 관리
- URL 및 스트림 처리
- 스레드와 런루프
- 봉쥬르
- 통신 포트 관리
- 국제화
- 정규 표현식 매칭
- 캐쉬 지원
CoreTelephony 프레임워크
코어텔레포니 프레임워크는 iOS4.0부터 포함된 프레임워크로 전화망 서비스를 제공하는 서비스 제공자의 정보를 얻거나 현재 전화망의 정보를 얻는 인터페이스를 제공한다. 이 프레임워크를 사용하여 서비스 제공자가 VoIP 서비스의 지원 여부를 판단할 수 있다.
CoreMedia 프레임워크
코어미디어 프레임워크는 iOS4.0부터 포함된 프레임워크로 AV Foundation이 사용하는 저 수준 미디어 타입을 제공한다. 대부분의 앱에서는 이 프레임워크가 필요하지 않지만 오디오와 비디오 컨텐츠를 세세하고 정밀하게 다뤄야 하는 개발자들에게는 필수 프레임워크이다.
CoreMotion 프레임워크
코어모션프레임워크는 앱이 장치 하드웨어로부터 움직임 데이터를 받을 수 있고 처리할 수 있는 인터페이스를 제공한다. 장치 하드웨어는 가속도계, 자이로스코프 등이다.
CoreLocation 프레임워크
코어로케이션 프레임워크는 장치의 현재 위도와 경도를 알려주는 인터페이스를 제공한다.
CoreFoundation 프레임워크
코어파운데이션 프레임워크는 C언어 기반 인터페이스로 iOS앱의 기본 데이터 관리와 서비스 기능을 제공한다. 이 프레임워크는 아래의 내용을 지원한다
- 데이터 컬렉션(배열, 집합, 사전 등)
- 번들
- 문자열 연산
- 날짜 및 시간 연산
- 원시 데이터 블록 처리
- 환경 설정 관리
- URL 및 스트림 처리
- 스레드 및 런루프
- 포트와 소켓 통신
코어파운데이션 프레임워크는 파운데이션 프레임워크와 밀접한 관계를 가지고 있다. 파운데이션 객체와 코어파운데이션 데이터 타입을 혼합해서 써야 할 때 “톨프리브릿징” 기술을 사용하여 이점을 얻을 수 있다. 톨프리브릿징기술은 코어파운데이션과 파운데이션 데이터 타입을 메서드나 함수에 상호교환적으로 사용할 수 있게 해주는 기술이다.
CoreData 프레임워크
코어데이터 프레임워크는 iOS3.0부터 포함된 프레임워크로 모델-뷰-컨트롤러 앱에서 데이터 모델을 관리하는 인터페이스를 제공한다.