지은이 서문
Objective-C는 C 언어에 객체지향 기능을 도입한 언어입니다. Mac OS X에서 돌아가는 애플리케이션이나 아이폰, 아이팟 터치, 아이패드에서 동작하는 편리한 애플리케이션도 개발하려면 우선 Objective-C를 알아야 합니다.
C 언어에 객체지향을 도입한 언어로는 C++가 유명하지만 Objective-C는 C++와는 다른 언어입니다. 자바나 C#, 루비와도 다른 무척 독특한 언어죠. Objective-C의 가장 큰 특징은 객체지향 언어면서도 상당히 유연한 프로그래밍이 가능할 뿐만 아니라 C 언어의 효율적인 코드를 집어넣을 수도 있다는 점입니다. 다른 객체지향 언어를 배운 적이 있는 분은 C 언어에 추가된 기능이 그리 많지 않다는 점과 독특한 ‘느슨한 느낌’에 놀랄지도 모르겠습니다.
2011년 Mac OS X 10.7 Lion, iOS 5의 등장으로 Objective-C 실행 환경은 모던 런타임이라 불리는 새로운 구조로 통일되었습니다. 동시에 언어 사양도 한 단계 진보해서 새로운 메모리 관리 방식인 ARC를 도입했습니다. 이미 도입된 선언 프로퍼티, 블록 객체 같은 기능은 보다 폭넓게 사용되어 Objective-C 프로그래밍 스타일은 요 몇 년 사이에 극적인 변화를 보였습니다.
이 책은 Mac OS X, iOS에서 개발하는 것을 염두에 두고 Objective-C를 설명합니다. 독자 여러분은 C 언어에 대한 기본 지식을 가지고 있는 분이라고 생각하지만 전문가가 아니라도 괜찮습니다. Objective-C는 애플 사 제품과 그 동작환경에 깊이 관계하므로 언어와 동작환경(OS, 프레임워크)을 따로 떼어 생각할 수 없습니다. 이 책은 언어 사양을 설명하면서 특히 중요한 Foundation 프레임워크의 주요 클래스도 설명합니다. Mac OS X와 iOS의 다른 점도 가능한 한 명확하게 설명하고자 했습니다.
처음부터 밝혀두지만 이 책은 Mac OS X나 아이폰의 그래픽 통합 개발환경의 사용법을 설명하는 책이 아닙니다. GUI 부분의 사용법이나 조합법은 설명하지 않습니다. 이 책을 읽고 당장 인터페이스가 멋진 애플리케이션을 만들 순 없습니다. GUI 구조는 다른 책을 참조하기 바랍니다.
Objective-C 컴파일러를 포함한 Mac OS X 및 iOS 개발환경은 Xcode를 인스톨하면 사용할 수 있으며, Xcode는 앱스토어에서 무료로 내려받을 수 있습니다(윈도우용 개발환경은 없습니다. 2013. 1 기준). 또한 애플 사의 개발자 지원을 이용하면 최신 개발 도구나 예제 코드, 기술 문서를 자유롭게 보거나 내려받을 수 있습니다. 다만, 실제로 아이폰이나 아이패드에 자신이 만든 프로그램을 설치해서 사용하거나 앱스토어에서 소프트웨어를 배포하려면 애플 사에 유료로 개발자 등록을 해야 합니다.
이 책의 설명은 터미널에서 동작하는 예제 프로그램으로 진행합니다. 이것은 개발환경만 설치하면 동작이 가능하고 궁금증이 생겼을 때도 프로그램을 실행해서 바로 확인할 수 있기 때문입니다. 따라서 Xcode 설정 등 언어와 관계없는 부분에서 시간을 허비하지 않아도 됩니다.
이 책은 2009년에 출판된 『Objective-C: 맥과 아이폰 애플리케이션 프로그래밍』(한빛미디어)에 새로운 내용을 추가해 재구성했습니다. 전 판과의 차이는 다음과 같습니다.
· 새로운 메모리 관리 방식인 ARC를 기본적인 구조에서부터 프로그래밍 주의사항까지 다루었습니다. 또한 ARC를 사용한 애플리케이션 개발을 전제로 예제 설명을 모두 수정했습니다. 한편, 수동 메모리 관리 방식 및 가비지 컬렉션 설명은 간략화했습니다.
· 인스턴스 변수 및 프로퍼티의 새로운 선언 방식에 대한 설명을 추가하고 예제에도 적용했습니다.
· ARC 사용 시 Core Foundation 객체와 형변환에 대한 설명도 추가했습니다.
이 책은 Mac OS X 10.7 Lion, 그리고 iOS 5 단계에서 발표된 애플 사 및 LLVM 프로젝트의 각종 문서를 기반으로 실제 프로그램을 작성해서 확인한 결과를 기반으로 구성했으므로 이전 버전에서는 동작하지 않을 수도 있습니다. 이 책에 실린 프로그램은 모두 확인 과정을 거쳤습니다. 소스 프로그램은 한빛미디어 사이트(http://www.hanb.co.kr/exam/2033)에서 내려받을 수 있습니다.
Mac OS X, iOS 소프트웨어 개발환경은 무척 유연하며 실행환경도 잘 만들어져 있어서 약간의 지식만 있으면 간단한 프로그램은 금방 만들 수 있습니다. 하지만 본격적인 애플리케이션을 개발하려면 역시 Objective-C를 체계적으로 배워야 합니다. 이것은 실행환경 자체가 Objective-C의 특징을 최대한으로 이용해서 구축되어 있기 때문입니다. 이 책으로 Objective-C 기본을 공부하면 다른 클래스나 프레임워크를 좀 더 편리하게 사용할 수 있을 것입니다. Objective-C로 프로그래밍을 즐겨주세요.
2011년 10월 5일, 애플 사(및 NeXT 사)를 이끌었던 스티브 잡스가 세상을 떠났습니다. 그는 우리에게 몇 번이나 ‘가슴 설레는 미래’라는 마법을 보여주었습니다. 정말 고맙습니다. 편히 잠드세요.
_오기하라 타케시
옮긴이 서문
세상에는 수많은 책이 있습니다. 프로그래밍 언어를 다루는 책도 수없이 많지요. 그런 책 중에는 달콤해서 잘 읽히는 책이 있는가 하면 보다가 깜빡 잠이 들고 마는 딱딱한 책도 있습니다. 그러나 아무리 달아도 욕심을 내다 보면 힘들어서인지 우리는 ‘한 권만 보면 만병통치’를 바라며 오늘도 또 다른 책을 찾아 헤맵니다. 그러다가 지쳐 쓰러질 때쯤 알게 되지요. ‘아, 그런 책은 없구나.’ 역시 세상살이는 만만하지 않습니다.
이 책은 쓴 약과 같습니다. 배 아플 때 먹는 냄새가 많이 나는 약처럼 입에 쓰고 삼키기 어려울지도 모릅니다. 입에 넣었을 때 단맛이라도 나게 코팅이라도 하면 좋으련만 그런 요령도 없는 고지식한 책이죠. 그러나 배탈이 나면 그런 쓴 약을 찾게 되듯, Objective-C로 프로그래밍하다 왜 안 될까라는 벽에 부딪혔을 때 찾게 될 책이 바로 이 책이라고 생각합니다. 바로 Objective-C의 근간을 이루는 내용을 다루기 때문입니다. 어떤 일을 진행하다 막히게 될 경우 기초로 다시 돌아가서 생각하면 돌파구가 보이기 마련이죠. 대개의 입문서나 활용서라면 그냥 넘어갈 부분을 이 책에서는 꼼꼼하게 챙겨 독자로 하여금 기초를 다질 수 있게 쉽게 풀어 놓았습니다. 실력 있는 프로그래머가 되려면 기초를 확실히 해두어야겠죠.
만만하지 않은 세상!
만만하지 않은 언어!
만만하지 않은 책!
그러나 즐거움은 어려움을 극복하고 한 걸음 더 나아가는 데서 온다고 생각합니다.
이 책을 통해 독자 여러분이 Objective-C라는 땅을 힘차게 달릴 수 있는 프로그래머가 되길 바랍니다.
번역하다가 아이폰이 세상에 처음 소개된 2007년, 잡스의 키노트를 보며 두근거렸던 그 밤을 떠올린 적이 있습니다. 아이폰을 쓸 수 없어서 아쉬운 대로 터치를 쓰며 감탄했었죠. 그 뒤로 손바닥 위 세상은 참 많이 변했습니다. 그리고 제 손바닥 위에는 아이폰이 있었지요. 그런 아이폰에서 동작하는 Objective-C 책을 번역하게 된 것도 어떤 인연이 있는 게 아닌가 생각합니다.
세 번째 번역이라 이제 좀 잘할 때도 되었건만 여전히 부족한 글이었습니다. 보기 좋게 고쳐주신 조희진 편집자님에게 감사를 드립니다. 그리고 집에서는 PC 앞에 앉아 등만 보여주며 함께 시간을 보내지 못해서 미안했고, 그럼에도 참아주고 이해해줘서 늘 고마웠다는 말을 사랑하는 은미에게 전하고 싶습니다. 부모님과 동생 가족도 항상 건강하고 행복하길 빕니다.
그리고 이 책을 구매해주신 여러분에게도 즐거움이 가득하길 바랍니다.
_2013년, 서수환
---본문 중에서