ProgrammingInObjectiveC:Chapter 20

From 흡혈양파의 번역工房
Revision as of 13:53, 31 July 2013 by Onionmixer (talk | contribs) (OC2 20장 :: 코코아 소개 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
3장 코코아와 아이폰 SDK / 20장
코코아 소개

20장 :: 코코아 소개

지금까지 작성한 프로그램들은 사용자 인터페이스가 간단했다. 모두 NSLog 루틴에 기대어 콘솔에 메시지를 표시하였다. 이 루틴은 매우 유용하지만, 그만큼 기능이 제한되어 있다. 맥에서 사용했던 프로그램들은 우리가 만든 프로그램처럼 낯설거나 어색해 보이지 않았을 것이다. 사실, 맥의 명성은 사용자 친화적인 다이얼로그와 쉬운 사용방식이 기반을 이룬다. 다행스럽게도 Xcode 와 인터페이스 빌더를 결합하면 여러분도 충분히 명성에 걸맞는 프로그램을 만들 수 있다. 이 두 프로그램을 결합하면 편집이나 디버깅 도구는 물론 온라인 문서에 편리하게 접근하여 프로그램을 개발하는 데 강력한 환경이 조성된다. 그 뿐 아니라 복잡한 그래픽 사용자 인터 페이스(GUI)를 손쉽게 개발할 환경도 마련된다.

여러분에게 풍부한 사용자 경험을 제공하는 응용 프로그램을 만들도록 지원해주는 프레임워크를 코코아라고 부른다. 이는 두 프레임워크로 구성되어 있다. 바로 이미 낯익은 Foundation 프레임워크와 Application Kit(혹은 AppKit) 프레임워크다. Application Kit 프레임워크에서는 창, 버튼, 목록등에 연관된 클래스들이 제공된다.


프레임워크 계층도

맨 아래에 있는 하드웨어와 최상위에 있는 응용 프로그램을 분리하는 계충을 하나씩 설명할 때, 보통 도표를 사용한다. 그림 20.1 역시 그런 도표 가운데 하나다.

'커널'은 '장치 드라이버'의 형태로 하드웨어와 저수준 통신을 할 수 있게 한다. 커널은 시스템 자원을 관리한다. 자원에는 실행, 메모리 관리와 전원, 기본 I/O 작업 수행 등을 조율하는 프로그램 들이 포함된다.

이름에서 알 수 있듯이 '코어 서비스'는 위 레이어에서 사용히는 저수준 핵심(core) 기술을지원한다. 예를들어 컬렉션, 네트워킹, 디버깅, 파일관리, 폴더, 메모리 관리, 스레드, 시간, 전원 등을 여기서 지원한다.

'애플리케이션 서비스' 계층은 Quartzz, OpenGL, QuickTime 등을 포함하여 인쇄와 그래픽 렌더링을 지원한다.

그림 20.1 응용 프로그램 계층도


응용 프로그램 바로 밑에는 코코아 계층이 존재한다. 이미 말했듯이, '코코아' 에는 Foundation 과 AppKit 프레임워크가 들어 었다. Foundation 은 컬렉션, 스트링,메모리 관리, 파일시스템, 아카이빙 등을 다루는 클래스를 제공한다. AppKit 에는 Mac OS X 의 강점인 뷰, 윈도우, 도큐먼트 같이 풍성한 사용자 인터페이스를 만드는 클래스들이 들어 있다.

이 설명을 듣고 나면, 몇몇 계층 사이에는 중복되는 기능이 있다고 생각하게 될 것이다. 컬렉션은 코코아와 코어 서비스 계층에 모두 존재한다. 그러나 엄밀히 말하면 코코아가 코어 서비스 계층을 기반으로 한다. 또한, 이따금 특정 계층을 건너뛰는 일도 있다.

예를 들어 Foundation 클래스 가운데 파일시스템을 다루는 클래스를 보자. 이 클래스는 애플리케이션 서비스 계층을 건너뛰고 바로 코어 서비스계층의 기능을 사용한다. 대부분 FOllndation 프레임워크는 (보통 절차적 언어 C로 작성된) 저수준 코어 서비스 계층에 정의된 데이터 구조의 객체지향 매핑을 정의한다.


코코아 터치

아이폰에는 MacOSX의 축소 버전을 구동시키는 컴퓨터가 담겨 있다. 가속도 센서 같은 몇몇 기능은 아이폰에만 있는 독특한 기능이다. 이는 MacBook 이나 iMac 과 같은, 다른 Mac OS X 컴퓨터 에서는 볼 수 없다.


objc2_notice_01
사실, 맥 노트북에는 가속도 센서가 들어 있어서 컴퓨터를 떨구면 하드디스크가 멈춰진다. 그러나 여러분의 프로그램에서는 이 가속도 센서에 직접 접근할 수 없다.


코코아 프레임워크는 Mac OS X 데스크톱과 노트북 컴퓨터용 응용 프로그램을 개발하고자 고안되었다. 반면 코코아 터치 프레임 워크는 아이폰과 아이팟 터치에서 실행할 응용 프로그램을 개발할 용도로 고안되었다.

코코아와 코코아 터치 모두 Foundation 프레임워크를 공통으로 가지고 있다. 그러나 코코아 터치에서는 UIKit 이 AppKit 을 대체하여 창, 뷰, 버튼, 텍스트필드 같은 동일한 형의 객체를 지원한다. 게다가 코코아 터치에는 가속도 센서 , GPS 와 WiFi 신호로 위치를 찾는 삼각 측정, 터치 기반 인터페이스 등을 다루는 클래스를 제공한다. 또한 인쇄 지원 같이 필요 없는 클래스는 제거하였다.

이것으로 코코아에 대한 짧은 소개를 마친다. 다음 장에서는 아이폰 SDK의 일부인 시뮬레이터를 사용하여 아이폰용 응용프로그램을 작성하는 방법을 배울 것이다.


Notes