인터페이스 빌더와 Xcode로 애플리케이션 만들기 Xcode
OSXDEV
[편집] Xcode
Xcode는 통합개발환경(IDE)으로 자바와 gcc를 이용한 C, C++, Objective-C를 지원한다. 하지만 이 연재의 목적은 Objective-C에 있으므로 Objective-C에 대해서만 이야기 하기로 하겠다.
프로젝트 빌더는 상당히 심플한 기능들을 가지고 있었지만 이번에 Xcode로 오면서 컴파일 속도도 많이 향상되고 몇가지 새로운 기능도 추가되었다.
- Distributted compile
워크그룹내의 사용되지 않는 컴퓨팅 파워를 이용해서 분산/병렬 컴파일을 지원한다. 또한, 필요하다면 Build Fleet을 이용해서 상당히 빨리 빌드 할 수도 있다. 이 기술은 애플의 랑데뷰 기술을 이용하고 있다.
- Zero link
링크과정을 최적화 시킨것으로 컴파일 후에 링크하는 단계에서 기존의 빌드된 것을 둔 채로 수정되어서 새로 컴파일된 파일만 다시 링크해준다.
- Fix and Continue
디버깅 중에 코드를 수정 할 수 있게 해준다.
[편집] 1.1 Project
메뉴에서 New Project를 선택해보면 실로 다양한 종류의 프로젝트를 만들 수 있다는 사실을 알 수 있다. 이중에 몇가지만 알아보자. 어시스턴스는 윈도우의 위저드와 비슷한 방식으로 Previous, Next버튼을 이용해서 앞뒤로 움직이면서 각종 옵션을 정해서 최종적으로 Finish버튼을 눌러서 무엇인가를 결정한다.
<그림 1> 프로젝트 어시스턴트
- AppleScript
AppleScript라는 것이 있다. 이것은 일종의 스크립트 언어로 이것만 이용해서도 괜찮은 애플리케이션을 작성 할 수 있다. 애플스크립트는 실제 언어와 상당히 유사하게 사용가능하며 매킨토시 시스템에서 애플리케이션간의 메시징에서도 상당히 중요한 역할을 한다. 이 애플스크립트를 배우는것도 상당히 재미있는 일일 것이다.
- Carbon
예전 MacOS 9를 포함한 이전의 OS에서 사용된 API셋(C)의 발전된 API셋으로 이것을 이용해서 프로그램을 작성하는 경우를 말한다. 만일 카본으로 작성하게 되면 MacOS 9과 MacOS X에서 동시에 돌아 갈 수 있는 프로그램을 만들 수 있다. 하지만 Xcode에서는 OS 9용 애플리케이션 개발을 지원하지 않을것이다. (만일 OS 9용 애플리케이션이 필요하다면 코드워리어를 사용해야 한다.)
- Cocoa
이 부분에 대해서는 두말 하면 잔소리다. 만일 이게 뭔지 모른다면 연재된 이전의 글들을 복습하기 바란다.
- Cocoa-Java
이것은 코코아 프래임웍을 자바로 코딩할 수 있게 해준다. 만일 자바에 익숙하다면 이 방법도 나쁘지는 않으나 그다지 권장하고 싶은 방법은 아니다. 물론 이렇게 작성된 프로그램은 비록 자바라고 하더라도 다른 플랫폼에서 작동되지 않는다.
- Bundle
번들은 실행코드와 각종 리소스를 포함한 것을 말한다. 사운드나 이미지 또는 nib등이 해당 될 수 있을 것이다.
- Framework
윈도우의 DLL과 유사한 역할을 해준다.
- Java, Java, Java...
Java AWT Applet, Java AWT Application, Java JNI Application, Java Swing Applet, Java Swing Application, Java Tool을 작성 가능하다. 솔직히 말해서 안타깝게도 필자는 자바에 대해서 잘 알지 못한다. 이런 저런 이유로 굳이 설명할 필요는 없을 것이다.
- Kernel Extension
MacOS X이 Mach커널 기반이라고 예전에 이야기 했을 것이다. MacOS X에서는 커널에 익스텐션을 올릴 수 있는데 흔히 디바이스 드라이버 같은 것을 만들때 쓰이기도 한다. 그 외에도 파일시스템을 확장한다던지 하는 일에도 사용한다.
- Standard Apple Plug-ins
MacOS X에서 사용되는 각종 플러그인을 만들 수 있는 프로젝트 이다.
- Tool
간단한 테스트 코드를 작성할 때도 유용하다. 지난달 예제도 Foundation Tool을 이용하기도 했었다.
[편집] 1.2 Cocoa Application
앞서 다양한 프로젝트들을 봤지만 본 연재는 코코아 애플리케이션에 국한된다. 사실 필자도 잘 모르는 분야들이 많다. 그러므로 일단 코코아 애플리케이션을 선택해서 넘어가면 다음과 같이 프로젝트의 이름을 정해주는단계로 넘어간다.
<그림 2> 프로젝트 어시스턴트
여기서는 보다시피 그냥 원하는 이름과 프로젝트의 폴더를 정해주고 Finish를 선택하면 된다.
<그림 3> 프로젝트
그러고 나면 <그림 3>과 같은 창이 열리면서 인덱싱을 시작할 것이다. 이 화면을 보면 이 프로그램이 사용하는 프래임웍이 보인다. AppKit.framework, Cocoa.framework, Foundation.framework이 기본적으로 사용된다.
그리고 MainMenu.nib이란 파일도 보이는데 이것은 '닙'이라고 읽는데 인터페이스 빌더로 제작한 리소스와 각종 컨넥션들이 실제 객체로 아카이빙 되어있는 파일이다. 애플리케이션은 이 Nib을 읽어서 바로 인스턴스화시켜서 프로그램을 시작하게 된다. 이 Nib에 대해서는 인터페이스 빌더를 다루면서 상세하게 다루게 될 것이다.
.pch파일은 프리컴파일헤더 파일이다. XCode에 새로 추가되었는데 프로젝트 빌더의 속도가 느리다는 불만을 상당히 잠재울 것이로 보인다.
자, 그럼 실제로 빌드를 해서 실행시켜보자(이 과정은 설명하지 않겠다. 일반적인 IDE사용법에 준하는 내용이다.)
실행하게 되면 아무것도 없는 빈 창이 하나 실행되는 것을 볼 수 있다. 여기서 잠깐 주의할 점이 있다.
이것은 MacOS(이하 맥)와 Microsoft Windows(이하 윈도우)와의 차이점에 기인한다. 윈도우의 경우 창을 닫는 행동이 애플리케이션의 종료와 직결된 경우가 많다. SDI프로그램의 경우 애플리케이션 자체 창을 닫으면 종료된다. 그러나 맥의 경우 창을 닫는 행동은 단순히 그 도큐먼트를 닫는 행동이다. 프로그램의 종료와는 무관하다. 이점을 모르고 맥에서 창을 닫고 애플리케이션이 종료되지 않는다고 의아해 하지 말도록 하자. 맥에서 애플리케이션을 종료하기 위해서는 메뉴에서 명시적으로 Quit를 선택해주거나 Command-Q 단축키를 이용한다.
이상 간단한 Xcode에 대한 설명을 마치도록 하겠다. 본 연재가 툴 리뷰가 아니므로 간단하게 끝내도록 하겠다. 사용법은 어렵지 않으니 기본적인 경험이 있다면 메뉴만 한번 훑어 보아도 충분히 사용가능 하다.




