Top

아이폰 SDK 애플리케이션 개발

  • 원서명iPhone SDK Application Development: Building Applications for the AppStore (ISBN 9780596154059)
  • 지은이조나단 지드자스키
  • 옮긴이김동호
  • ISBN : 9788960771246
  • 30,000원
  • 2010년 02월 26일 펴냄 (절판)
  • 페이퍼백 | 488쪽 | 185*235mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

애플 SDK를 사용해 아이폰과 아이팟터치용 게임과 모바일 애플리케이션을 만드는 데 필요한 실용적인 지식을 제공한다. 다양한 예제를 통해 개발 패러다임과 오브젝티브C를 소개하고, 완벽한 기능의 애플리케이션 설계에 필요한 SDK의 다양한 프레임워크를 모두 다룬다.


[ 소개 ]

매우 종합적인 내용을 다루는 책으로서 아이폰 개발자들에게 요긴한 수많은 예제 프로젝트를 잘 설명해놓았다. 저자 조나단의 글은 권위 있고 명쾌하며 풍부한 경험이 가득 담겨있다.
- 존 홀 / GoDaddy.com 소프트웨어 엔지니어


2008년 3월 애플이 SDK를 공식 발표했을 때 엔터프라이즈 개발자들은 환호했다. 오랫동안 기다려온 개발자들에게 아이폰의 상업용 애플리케이션을 설계할 수 있는 개발환경과 개인사용자에게 배포할 수 있는 공급 채널이 마침내 열렸기 때문이다. 이 책은 앱스토어에 특화된 애플리케이션 개발에 사용되는 공식 애플 SDK와 API에 대해 설명한다.

애플 SDK는 모바일 소프트웨어 개발에 있어 대단한 발전을 이뤘으며 벼락부자를 만드는 환상적인 관문을 제공했다. SDK 개발자는 자신이 만든 제품을 즉시 구매할 수 있는 수백만의 사용자와 직접 연결된 채널을 갖게 된다. 오랫동안 기다려온 애플의 NDA 철회는 환상적인 디바이스인 아이폰과 사업모델에 대한 열광을 극대화시키는 결과를 낳았다. 아이폰 SDK가 가져다 주는 이익과 혁신의 기회에 대해서는 의심의 여지가 없다.

그러나 이 열광은 바로 현실적인 한계에 부딪히게 된다. 아이폰 개발자들은 여전히 일면 폐쇄적인 디바이스 플랫폼상에서 개발해야 한다. 개발자가 만든 애플리케이션은 접근방식을 제약하는 제한된 샌드박스에서 실행되고 애플은 디바이스의 좀더 강력한 리소스에 접근하기 위해 비공개 API를 사용하는 개발자에게 제약을 둔다. 개발자는 개발가능한 것에 대한 잘못된 추정으로 헛된 코딩 시간을 보내지 않도록 개발환경의 한계에 대해 알아둘 필요가 있다.

SDK를 제약하는 애매한 족쇄가 있긴 해도 SDK가 양질의 게임과 애플리케이션을 작성하기에 충분한 플랫폼이라는 사실은 명백하다. SDK는 아이폰의 복잡한 저수준 프레임워크를 감춰주고 사용하기 쉬운 객체를 제공한다. 그러므로 사용자 인터페이스, 위치관련 검색, 환경설정과 같은 작업을 코딩하는 데 드는 시간이 다른 개발환경에 비해 줄어들었다. 따라서 개발자들은 프로젝트의 좀더 중요한 부분에 집중할 수 있다. 몇 줄의 코드만으로 3D 애니메이션, 오디오 사운드 등이 들어간 다양한 사용자 인터페이스를 만들어 낼 수 있다. 이 책은 아이폰 개발의 패러다임과 완벽한 아이폰 소프트웨어 디자인에 중요한 프레임워크를 소개한다.


[ 이 책에서 다루는 내용 ]
• 인터페이스 빌더와 UI 킷 프레임워크를 이용한 UI 디자인
• 윈도우, 내비게이션 바 등 애플리케이션 컨트롤 생성
• 레이어 생성/관리와 코어그래픽스와 쿼츠코어를 사용한 전환
• AVFoundation을 이용한 사운드 파일 재생과 믹싱
• 오디오 툴박스를 이용한 디지털 사운드 스트림 녹음과 재생
• CFNetwork 프레임워크를 사용한 네트워크 프로그래밍
• 아이폰 GPS와 대응하는 코어 로케이션 프레임워크
• 무비 플레이어 기능


[ 이 책의 대상 독자 ]

이 책은 아이폰용 애플리케이션을 개발하려는 초보자나 경험있는 개발자들을 대상으로 했다. 여러분이 이 책을 유용하게 읽으려면 개발에 대한 사전 지식이 필요하다. 아이폰 개발환경에서는 오브젝티브C를 사용한다. 오브젝티브C는 책 서두 부분에서 설명한다. 개발환경에서 C/C++를 사용한 경험이 있다면 오브젝티브C를 매우 빨리 익힐 수 있을 것이다. 이 책에서 오브젝티브C에 대한 모든 것을 다루지는 않지만 책에 실린 기본적인 내용과 완성된 많은 예제 코드로 오브젝티브C에 입문하는 데 도움이 될 것이다.

책을 읽으면서 이 책이 다루지 않는 디바이스의 다른 측면에 대해서도 생각해보자. 많은 저수준 객체와 프레임워크는 SDK에서는 제한되지만 아이폰 해킹 커뮤니티에서 널리 쓰여왔다. 이 책에서는 SDK로 가능한 것과 불가능한 것에 대해 혼란스럽지 않도록, 몇 가지 명시된 예제를 제외하고는 비공식 API는 사용하지 않았다. SDK를 사용한 내부적으로 사용할 애플리케이션을 개발하거나 저수준에서 아이폰이 어떻게 작동하는지 더 알고 싶다면 『iPhone Open Application Development 2판』을 보충 교재로 살펴보기를 권한다. 두 책을 함께 보면 SDK로 가능한 것과 불가능한 것을 이해할 수 있을 뿐 아니라 해킹 커뮤니티에서 작성된 애플리케이션과 기능성을 비교해 볼 수도 있다.


[ 이 책의 구성 ]

1장. 아이폰 SDK 시작하기
아이폰 SDK를 다운로드하고 실행하는 방법을 설명한다. 샘플 애플리케이션을 설치하고 빌드하는 방법을 설명한다.

2장. 인터페이스 빌더: 엑스코드용 GUI 도구
아이폰의 사용자 인터페이스를 설계하는 데 사용하는 위지윅 도구인 인터페이스 빌더를 소개한다.

3장. UI 킷 소개
UI 킷 프레임워크를 소개하고 기본적인 UI 요소들을 어떻게 설계하는지 설명한다.

4장. 멀티터치 이벤트와 지오메트릭
이벤트 처리와 기본적인 지오메트릭을 설명한다.

5장. 쿼츠코어를 사용한 레이어 프로그래밍
레이어의 생성과 관리 방법, 코어 그래픽스와 쿼츠코어를 사용한 변환 방법을 보여준다.

6장. 오디오 툴박스와 AVFoundation
AVFoundation을 사용해 사운드파일을 믹싱하고 재생하는 방법을 알려주며 오디오 툴박스 프레임워크를 이용해 디지털 사운드 스트림을 녹음하고 재생하는 방법도 살펴본다.

7장. CFNetwork로 네트워크 프로그래밍하기
CFNetwork 프레임워크를 이용한 네트워크 프로그래밍을 설명한다.

8장. 위치확인: 코어 로케이션
코어 로케이션 프레임워크에 대해 소개하고 아이폰 GPS와 어떻게 상호작용하는지 설명한다.

9장. 주소록 프레임워크
주소록 API를 설명하고 연락처를 검색하고 화면에 보여주는 방법을 설명한다.

10장. 고급 UI 킷 설계
좀더 확장된 UI 킷 클래스를 소개한다.

11장. 애플리케이션 설정
프로퍼티 목록과 애플리케이션 프레퍼런스을 읽고 쓰는 방법을 설명한다.

12장. 커버플로우
커버플로우 스타일로 앨범을 넘기는 방식을 설계하는 방법을 설명한다.

13장. 페이지 넘기기
페이지를 넘겨 전환하는 효과와 책의 페이지처럼 여러 뷰 사이를 넘기는 방식을 설명한다.

14장. 미디어 플레이어 프레임워크
애플리케이션에 영상 재생기를 추가하는 방법을 설명한다.

저자/역자 소개

[ 저자 서문 ]

오랫동안 아이폰 해킹 커뮤니티에 소속돼 있으며 사람들은 내게 아이폰 SDK에 대한 의견을 물어왔다. 이 책을 구매한 독자들에 대한 보답으로서 그에 대한 답을 들려 드리고자 한다. 간단히 요약하자면, 애플 아이폰 SDK는 보기 싫게 어지러진 것들을 깔끔하게 정리하는 매우 훌륭한 고수준 기능들을 포함한다. 아이폰 SDK라는 안락한 군집 속 깊은 곳에는 매우 비조직적이고 불완전하게 디자인된 프레임워크가 존재하기는 하나, 이렇듯 거친 기능조차 SDK가 없는 분야에 비해 매우 기능적이기도 하다. 아이폰 SDK는 품질과 기능이 뛰어난 앱스토어용 애플리케이션을 개발하기에 충분하다(그렇지 않았다면 이 책을 쓰지도 않았을 것이다). SDK가 제공하는 인터페이스는 훌륭한 소프트웨어를 디자인하는 대부분 개발자들에게는 유용하지만 대부분 사람들이 사용할 수 없는 기능에 관해서는 잘 알지 못한다. 오픈소스 진영에 발을 들여놓은 사람들에게 아이폰 SDK는 여전히 논쟁의 핵심이다.

아이폰 SDK를 둘러싼 정책에 익숙치 않은 사람들에게 간단히 설명하자면, 개발자 인터페이스에는 애플이 사용하는 인터페이스와 SDK에서 제공하는 인터페이스, 두 가지 세트가 있다. 둘 사이에는 중복되는 부분이 있지만 이미 내 책 『iPhone Open Application Development』(오라일리)에서 SDK에서는 볼 수 없는 많은 클래스와 프레임워크에 대해 저술한 바 있다. 책에 나온 내용 중 대부분은 SDK에서는 사용할 수 없기 때문에 아마 들어 본 적도 없을 것이다. 대부분 초기 아이폰 해킹 커뮤니티 회원은 아이폰 운영체제를 직접 해킹하는 방법을 찾아냈다. 심벌 테이블과 클래스를 덤프하고, 시행착오를 통한 실험을 몇 주에 걸쳐 직접 해봄으로써 우리는 결국 비공개 항목 등을 담아낸, 프레임워크들은 물론 아이폰 사용자 인터페이스 킷에 해당하는 전반적인 유전자지도를 완성했다. 개발자들이 오픈소스 툴체인으로 아이폰 소프트웨어를 개발할 때 사용하는 것이 바로 이런 저수준 API다. 이 같은 저수준 API를 써서 SDK에서는 허용하지 않는 작업을 수행해낸 애플 애플리케이션이 의외로 많다.

오픈소스 툴체인 개발자들이 제공하는 이들 저수준 API는 애플 SDK보다 더 나은 개발 프레임워크를 제공한다고 생각한다. 디바이스에 완전히 감춰진 대다수 프레임워크의 기능은 앱스토어 개발자들이 대부분 사용할 수 없게 돼있다. 꼭 그런 건 아니지만, 애플의 기존 애플리케이션에 잠재적인 경쟁 상대가 되는 애플리케이션은 개발할 수 없는 결과를 낳았다. 스크린 레이어에 원시 픽셀을 직접 렌더링하고 그래픽 가속기 사용을 포함하는 기능을 SDK 개발자들에게 제공하는 코어 서피스 프레임워크(Core Surface framework)를 엄격하게 제한하는 것은 가장 큰 위법 행위에 해당한다. 이 프레임워크를 활용하지 않고 2D 렌더링이 필요한 커스텀 영상 재생기, 비디오 녹화기, 공개 닌텐도 에뮬레이터 같은 고성능 2D 게임 애플리케이션의 성능 향상을 꾀하기란 여간 어려운 일이 아니다. 코어 서피스 프레임워크는 또한 성능척도를 갖는 플래시나 자바같은 애플리케이션 개발에 필요한 중요한 프레임워크다. SDK에 없는 API 집합은 아이튠즈 뮤직 인터페이스와 관련되어 있다. 이는 왜 네이트 트루(Nate True)가 만든 탭탭 레볼루션(Tap Tap Revolution)의 SDK 버전에서 개인 아이튠즈 라이브러리에 있는 노래를 가져올 수 없는지, 왜 싱크스텝(SynchStep) 같은 멋진 음악 애플리케이션이 앱스토어에는 없는지에 대한 이유기도 하다. 백그라운드 실행이나 상태 바 아이콘을 보여줄 수 있는 간단한 기능조차도 앱스토어의 제한된 API를 사용해야만 한다. 두말할 나위도 없이, 오픈소스 아이폰 컴파일러는 SDK로는 불가능한 작업들을 수행함으로써 아이폰 소프트웨어 시장에서 애플과 대적할 만한 경쟁상대로 부각됐다.

이런 일들의 이면에서, SDK는 오픈소스 진영은 결코 상상조차 할 수 없는 돈다발을 쥐어준다. 아이튠즈 사용자만큼의 거대한 고객에게서 얻을 수 있는 금전적인 이익을 상상해본 개발자들은 혐오스런 애플의 정책을 감내하기에 이른다. 앱스토어는 이처럼 기꺼이 독배를 마시려는 혁신가들에게 재정적인 보상을 안겨준다. 앱스토어가 제공하는 잠재적인 수익은 자신들의 애플리케이션이 조금씩 불구가 되어감에도 불구하고 공개 커뮤니티를 넘어서는 명확한 장점을 개발자들에게 부여한다. 독립적인 기술적 관점에서 오픈소스 컴파일러는 SDK 인터페이스와 사용할 때 주의가 필요한 저수준 비공개 인터페이스 중 어떤 것이든 사용해서 애플리케이션을 생성할 수 있다. 비공개, 문서화되지 않은 인터페이스를 개발 프로젝트로 쉽게 가져올 수 있다. 이 사실은 애플리케이션을 개발할 때 가능한 조합을 제시한다.

결국 앱스토어에 애플리케이션을 배포하고 싶다면 애플의 정책에 따라야 한다. 애플은 비공개 인터페이스나 프레임워크를 사용한 애플리케이션을 허용하지 않는다. 소문에 의하면 애플은 그들의 영역과 겹치는 기발한 애플리케이션을 거부하기도 하고 고유한 화면 밝기를 조절하려는 시도에 대해 신경질적이라고 한다. 여러분이 상업적인 개발자거나 기업에 납품할 소프트웨어를 설계한다면 실제로 가능한 경로는 단 한 가지뿐이며, 그것은 이 책에 나오는 인증받은 API를 사용하는 것이다. 그러나 이 책을 읽는 여러분이 오픈소스에 열광적인 지지자이고 자신의 코드를 좀 더 예술적으로 생각한다면 족쇄나 샌드박스 없이 만드는 애플리케이션 개발에 더 재미를 느끼게 될 것이다. 따라서 나는 여러분이 이 책에서 다룬 API 뿐만아니라 문서화되지 않은 수많은 API와 프레임워크도 공부해주길 바란다. 최초로 공개 컴파일러를 만들었고 온라인 커뮤니티 소프트웨어 아이폰 저장소를 운영 중인 오픈소스 커뮤니티 진영도 모든 기능을 잘 갖춘 멋진 애플리케이션이 더 많이 나오길 기대한다.

아이폰 개발 분야는 현재 분열의 고통을 겪고 있다. 양 진영은 모두 성장하고 있지만 양극화는 더 심각해지고 있다. 개발자들은 SDK에 존재하는 수많은 제약으로 인해 환멸을 느끼는 중이며, GPL 같은 인기있는 오픈소스 라이센스와 양립할 수 없다는 사실을 두고 논쟁을 하거나 애플이 아이폰을 오픈한다면 해킹은 사라질 거라고 단언한다.

나는 애플이 SDK에 대해 미심쩍고 독점적인 제한을 계속해서 강요하기보다는 아이폰 운영체제를 공개해주기를 진정으로 바란다. 아이폰이 역사상 가장 혁신적인 모바일 기기로 자리 잡고 있는 틈을 타 애플은 개발자와 소비자 모두에게 유해한 시장을 장악하려는 위험을 무릅쓰고 있다. 아이폰을 사서 쓰는 일이 총기 몇 자루를 구입하는 일보다 더 어렵다는 사실에서 애플의 통제에 대한 강한 욕망을 짐작할 수 있다. 이와 같은 완고한 태도 때문에 개발자들은 이 놀라운 모바일 플랫폼을 설계하는 데 큰 어려움을 겪었다.

나는 기기 제조사의 종잡을 수 없는 정책 때문에 명석한 개발자들의 창의성과 혁신이 영향을 받아서는 안 된다고 생각한다. 코드에는 개발자들이 표현하고자 하는 내용이 담긴다. 따라서 표현의 자유를 제재하는 검열을 강제한다면 애플 캠퍼스에서 기인하지 않은 혁신을 억압하는 것밖에는 되지 않는다.

그렇지만 여전히 나는 애플 제품에 경외심을 느끼고 그들의 혁신에 박수를 보낸다. SDK는 심사숙고의 산물일 뿐 아니라 애플의 오브젝티브C는 지금까지 내가 본 가장 우아한 개발자 중심의 언어 중 하나다. 애플은 멋진 제품을 만들어내는 능력이 있고 아이폰에 관한 거의 모든 것이 매우 훌륭하다. 애플이 다른 분야에서도 혁신을 누르지 않고 가장 창조적인 존재로 성공을 이어나가기만을 바랄 뿐이다.


[ 저자 소개 ]

조나단 지드자스키 Jonathan Zdziarski (http://www.zdziarski.com)
아이폰 개발자 커뮤니티에서 ‘NerveGas’라는 해커로 더 잘 알려진 저자는 아이폰을 크래킹하며 쌓은 노력이 첫 오픈소스 애플리케이션을 포팅하는 데 크게 기여했다. 아이폰 SDK가 발표되기도 전에 오라일리 출판사에서 출간된 저자의 첫 책 『iPhone Open Application Development』에서는 아이폰 애플리케이션을 어떻게 개발할 수 있는지 개발자들에게 알려줌으로써 열화와 같은 성원을 이끌어냈다. 『iPhone Forensics』(오라일리)을 출간하기 전부터 아이폰 포렌식 매뉴얼을 만들어 법률집행기관에 독점 제공하고 포렌식 수사에도 도움을 주었다. 법률집행기관을 자문역을 맡아 활동하며 틈틈이 아이폰 포렌식 워크샵을 열어 포렌식 수사관과 기업 보안인력을 교육한다.
또한 저자는 온라인 사기와 스팸에 대응하는 기계학습기술 분야의 전문 연구과학자이며 고객 보호를 강화하기 위한 네트워크 제품 개발에도 관여하고 있다. 호평을 받으며 2006년 센서리 네트워크Sensory Network 사에 인수된 차세대 스팸필터 DSPAM 프로젝트의 창립자이기도 한 저자는 알고리즘 이론과 기계학습 분야에서 으뜸가는 연구자로서 스팸을 주제로 폭넓은 강의를 한다.


[ 옮긴이의 말 ]

농담처럼 다음달 폰이라고 불리던 아이폰이 번역을 진행하던 중에 출시됐다. 그동안 소문도 무성했고, 기대도 많았지만 매해 스티브 잡스의 키노트에 한국이 제외됐을 때의 실망감을 생각하자면 열기가 식을 만도 하건만 막연한 기대감으로 아이폰을 기다렸던것 같다.

기다림은 현실이 됐다. 외국 블로그를 통해서나 봤던 일이 우리나라에도 벌어지고 있었다. 길에 줄지어 늘어선 사람들, 출시일을 기다리며 거리에서 밤을 새는 사람들, 아이폰 예약 전화선 불통 사태, 배송 중 개통과 같은 웃지 못할 에피소드를 남기며 최단기간 최다판매라는 기록으로 국내 이통 시장을 놀라게 했고 이통사 중심으로 폐쇄되어있던 한국시장에 변화를 불러일으켰다.

폐쇄적인 정책을 쓰는 애플이 폐쇄적인 한국시장을 눈뜨게 해줬다는 사실이 아이러니하기도 하다. 오래 전 인기 키워드였던 모바일, LBS 같은 단어들은 다시 뜨겁게 달아오르고 있다. 그리고 아이폰이 보여준 스마트폰의 우아한 수준은 사용자와, 국내외 제조사와 SW개발사, 서비스 제공업체 모두에게 긍정적인 효과를 주고 있다.

이 책은 입문서다. 아마도 아이폰 SDK를 다루는 번역 입문서 중에는 가장 마지막 책이 되지 않을까 생각한다. 예전 아이폰 해킹커뮤니티를 이끌던 저자의 애플 폐쇄정책에 대한 비난과 매력적인 아이폰에 대한 애정이 고스란히 표현된 책이다. 무엇을 할 수 있고 무엇을 할 수 없는지에 대한 설명들을 따라가면서 아이폰 SDK의 본 모습을 알 수 있고 더 공부해야 할 것들이 무엇인지를 알려주는 입문서로 충실한 역할을 하리라 생각한다.

아이폰은 사용자뿐만 아니라 개발자에게도 새로운 환경과 가능성을 열어줬다. 책에도 나오지만 입신양명과 일확천금을 꿈꾸는 수많은 개발자가 오늘도 아이폰 플랫폼의 문을 두드리고 있다. 이 책을 손에 쥔 여러분의 마음 한구석에도 비슷한 생각이 자리잡고 있을지도 모르겠다.

아이폰과 더불어 안드로이드 역시 이런 붐을 일으키는 다른 축이 되고 있다. 최근에는 삼성이 바다플랫폼을 공개했고 앱스토어에 대항하는 글로벌 이통사들의 연합소식도 들려온다. 어찌됐건 이런 사건들 덕분에 결국은 소프트웨어와 컨텐츠에 돈을 지불하고 구입하는 긍정적인 시장을 만드는 데 기여하고, 이는 바로 개발자들에게 노력한 만큼의 대가, 노력할 만한 비전을 심어주는 선순환 구조를 만들어낸다. 공부할 게 점점 많아지기는 하지만 다양한 플랫폼에서 다양한 경험을 했으면 하는 바람이다.

마무리 작업을 진행하는 동안 스티브잡스가 새로운 디바이스 아이패드iPad를 소개했고 그와 관련해 버전업된 베타버전의 SDK가 등록된 개발자들에게만 공개됐다. CoreText 프레임워크 추가와 기존 프레임워크에 추가된 메소드들로 약간의 변화가 있었지만 OS 버전이 바뀌고 기존의 문서화되지 않은 API의 공개수준이 아니라면 당분간 SDK 입문서류의 책들은 더 이상 큰 변화는 없을 거라는 생각이 든다.

부디 개발자들이 이 책을 읽고 아이폰 개발을 좀더 쉽게 이해하고 큰 결실을 맺는 계기가 되길 바란다.


[ 옮긴이 소개 ]

김동호
PC통신시절부터 인터넷으로 전환되는 시점까지 개발자로서 패러다임의 흥망성쇠를 겪으면서 10년이 넘는 시간을 보냈다. 돌아보니 C부터 시작해 인기 있던 스크립트언어들까지 참으로 넓고도 얄팍한 삶을 살아왔다는 생각도 든다. 지금은 잠시 개발자 인생에서는 조금은 멀어져 있지만 아이폰이라는 출중한 장난감을 만나 혹시 대박의 기회가 생기진 않을까 하는 기대에 곁눈질을 계속하고 있는 비범한 직장인이다.

목차

목차
  • 1장 아이폰 SDK 시작하기
  • 애플리케이션의 구조
    • 엑스코드의 내부
  • 아이폰 SDK 설치
    • 준비사항
    • 아이폰 시뮬레이터
    • 아이폰 SDK 다운로드와 설치
  • 아이폰 프로비저닝
  • 애플리케이션 빌드와 설치
    • 모델-뷰-컨트롤러
    • 애플리케이션 템플릿
    • 엑스코드 프로젝트 레이아웃
    • 프로토타입
    • 프레임워크 추가
    • SDK 설정
    • 애플리케이션 빌드
    • 애플리케이션 설치
  • 오브젝티브C
    • 메시징
    • 클래스와 메소드 선언
    • 구현
    • 프로퍼티
    • 프로토콜
    • 카테고리
    • 포징
    • 추가 정보
  • 2장 인터페이스 빌더: 엑스코드용 GUI 도구
  • 윈도우, 뷰, 뷰 컨트롤러
  • 기존 템플릿
  • 신규 템플릿
  • 사용자 인터페이스 요소
    • 컨트롤러
    • 데이터 뷰
    • 입력과 값
    • 윈도우, 뷰, 바
  • 인스펙터
  • UI 설계
    • 윈도우
    • 뷰 컨트롤러
    • 뷰 연결
    • 코드에 연결 추가
  • 프로젝트에서 인터페이스 빌더 제거
  • 3장 UI 킷 소개
  • 기본 사용자 인터페이스 요소
  • 윈도우와 뷰
    • 윈도우와 뷰 생성
    • 뷰 보여주기
    • HelloView 예제
    • 요약
    • UIView에서 파생하기
    • HelloWorld 예제
    • 요약
  • 뷰 컨트롤러
    • 뷰 컨트롤러 생성
    • 인터페이스 빌더에서 가져오기
    • 방향 전환
    • 뷰 컨트롤러 삭제
    • ControllerDemo 예제
    • 요약
    • 생각해볼 문제
  • 텍스트 뷰
    • 텍스트 뷰 생성
  • 컨텐트 할당
    • HTML 보여주기
    • SourceReader: 웹페이지 소스코드 리더
    • 요약
    • 생각해볼 문제
  • 내비게이션 바와 컨트롤러
    • 내비게이션 컨트롤러 생성
    • 내비게이션 컨트롤러 프로퍼티
    • 세그먼티드 컨트롤 추가
    • 툴바 추가
    • PageDemo: 내비게이션 연습
    • 요약
    • 생각해볼 문제
  • 전환 애니메이션
    • 전환 생성
    • 전환 추가
    • FlipDemo: 페이지 넘기기
    • 요약
    • 생각해볼 문제
  • 액션 시트와 경고
    • 경고
    • 액션 시트
    • 액션 시트 해제
    • EndWorld 애플리케이션: 확인 기능
    • 요약
    • 생각해볼 문제
  • 테이블 뷰와 테이블 뷰 컨트롤러
    • 테이블 생성
    • 테이블 셀
    • 다중선택 구현
    • 편집과 밀어 지우기
    • 테이블 리로드
    • TableDemo: 간단한 파일 브라우저
    • 요약
    • 생각해볼 문제
  • 상태바 조작
    • 상태바 숨기기
    • 상태바 스타일
    • 상태바 방향
  • 애플리케이션 뱃지
    • 애플리케이션 뱃지 보여주기
    • 애플리케이션 뱃지 삭제
    • 생각해볼 문제
  • 애플리케이션 서비스
    • 중지와 재개
    • 프로그램 종료
  • 사파리 실행
  • 통화 초기화
  • 4장 멀티터치 이벤트와 지오메트릭
  • 기하학적 구조체 소개
    • CGPoint
    • CGSize
    • CGRect
  • 멀티터치 이벤트 처리
    • UITouch 알림
    • UIEvent
    • 이벤트 처리
    • 예제: 탭 카운터
    • 예제: 탭과 드래그
    • 멀티터치 처리
    • PinchMe: 핀치 추적
    • TouchDemo: 멀티터치 아이폰 추적
    • 요약
    • 생각해볼 문제
  • 5장 쿼츠코어를 이용한 레이어 프로그래밍
  • 레이어에 대한 이해
    • 레이어 계층 구조
    • 크기와 오프셋
    • 배열과 디스플레이
    • 렌더링
    • 변환
    • 레이어 애니메이션
    • 레이어 변환
    • BounceDemo: 재미있는 레이어
    • 요약
    • 생각해볼 문제
  • 6장 오디오 툴박스와 AVFoundation
  • AVFoundation 프레임워크
    • 오디오 플레이어
    • 플레이어 프로퍼티
    • 사운드 재생
    • 델리게이트 메소드
    • 미터링
  • AVMeter: VU 미터 생성
    • 요약
    • 생각해볼 문제
  • 오디오 서비스
    • 요약
  • 오디오 큐
    • 오디오 큐 구조체
    • 오디오 출력 제공
    • 사운드 버퍼
    • 콜백 함수
    • 볼륨 조절
    • 예제: PCM 플레이어
    • 요약
    • 생각해볼 문제
  • 사운드 녹음
    • 오디오 큐 구조체
    • 오디오 입력 제공
    • 사운드 버퍼
    • 콜백 함수
    • 원시 데이터 접근
    • 파일 쓰기
    • 예제: 사운드 녹음기
    • 요약
    • 생각해볼 문제
  • 진동
  • 7장 CFNetwork를 사용한 네트워크 프로그래밍
  • 기본 소켓 프로그래밍
    • 소켓 타입
    • CFSocket
    • CFSocketContext
    • 소켓 스트림
    • CFSocket 예제: 대화 서버
    • 생각해볼 문제
  • CFHTTP와 CFFTP
    • CFHTTP
    • CFFTP
    • 생각해볼 문제
  • 8장 위치확인: 코어 로케이션
  • 코어 로케이션 매니저
    • 검색 파라미터
    • 쿼리 생성
    • 업데이트 정보 수신
    • 쿼리 완성
    • 오류 처리
    • 예제: WhereYouAt
    • 요약
    • 생각해볼 문제
  • 9장 주소록 프레임워크
  • 주소록 접근
    • 상위레벨 주소록 함수
    • 주소록 검색
    • 레코드 생성
    • 레코드로 작업하기
    • 다중값 프로퍼티
    • 딕셔너리로 작업
    • 이미지 데이터
    • 생각해볼 문제
  • 주소록 UI
    • Person 뷰
    • 피플 피커
    • 생각해볼 문제
  • 10장 고급 UI 킷 설계
  • 공통 컨트롤
    • UIControl 기본 클래스
    • 세그먼티드 컨트롤
    • 스위치
    • 슬라이더
    • 텍스트 필드 컨트롤
    • 버튼
    • 페이지 컨트롤
    • 생각해볼 문제
  • 프레퍼런스 테이블
    • 프레퍼런스 테이블 생성
    • 프레퍼런스 테이블 보여주기
    • ShootStuffUp: 프레퍼런스 테이블 예제
    • 요약
    • 생각해볼 문제
  • 섹션 목록
    • 섹션 목록 생성
    • 인덱스 바 추가
    • 섹션 목록 보여주기
    • TableDemo: 더 나은 파일 브라우저
    • 요약
    • 생각해볼 문제
  • 진행과 액티비티 표시자
    • UIActivityIndicatorView: 회전 표시자
    • UIProgressView: 회전 표시자를 바꿔보자
    • 네트워크 액티비티 표시자
    • 생각해볼 문제
  • 이미지
    • 이미지 객체
    • ImageFun: 재미있는 이미지와 패턴
    • UIImageView: 뷰 속의 이미지
    • 이미지 피커
  • 키보드 프로퍼티
    • 키보드 스타일
    • 키보드 형태
    • 반환키
    • 자동대문자
    • 자동수정
    • 보안 텍스트 엔트피
  • 피커
    • 피커 생성
    • 피커 보여주기
    • 피커 읽기
    • NosePicker: 코 모양의 휠 방식
    • 요약
    • 생각해볼 문제
  • 날짜/시간 피커
    • 날짜/시간 피커 생성
    • 날짜 피커 보여주기
    • 날짜 읽기
    • DatePicker: 독립기념일 피커
    • 요약
    • 생각해볼 문제
  • 탭바
    • 탭바 컨트롤러
    • 탭바 컨트롤러 생성
    • 수정 가능한 버튼
    • 내비게이션
    • 델리게이트 액션
    • TabDemo: 그밖의 텍스트북
    • 요약
    • 생각해볼 문제
  • 센서와 디바이스 정보
    • 모드 방향 읽기
    • 디바이스 정보 읽기
    • 가속도계 읽기
    • 접근 센서
    • 생각해볼 문제
  • 스크롤 뷰
    • 스크롤 뷰 생성
    • 프로퍼티
    • 델리게이트 메소드
    • BigImage: 기상도 스크롤
    • 요약
    • 생각해볼 문제
  • 웹뷰
    • 웹뷰 생성
    • 웹뷰 보여주기
    • 컨텐트 로딩
    • 내비게이션
    • 델리게이트 메소드
    • WebDemo: 구글검색 유틸리티
    • 요약
    • 생각해볼 문제
  • 11장 애플리케이션 설정
  • 딕셔너리와 프로퍼티 목록
    • 딕셔너리 생성
    • 키 관리
    • 프로퍼티 목록 작성
    • 프로퍼티 목록 읽기
    • 생각해볼 문제
  • 프레퍼런스 번들
    • 키 추가
    • 프레퍼런스 번들 값 읽기
    • 생각해볼 문제
  • 12장 커버플로우
  • CovertFlow: SDK 커버플로우 개발
    • 요약
    • 생각해볼 문제
  • 13장 페이지 넘김 애니메이션
  • PageControl 예제
    • 요약
    • 생각해볼 문제
    • PageScrollView
    • 요약
  • 14장 미디어 플레이어 프레임워크
  • 무비 플레이어 컨트롤러
    • 프로퍼티
    • 영상 재생 및 멈추기
    • 노티피케이션

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안