Top

코코아 터치 프로그래밍

  • 원서명Cocoa Touch for iPhone OS 3 (ISBN 9780470481073)
  • 지은이지바 드보
  • 옮긴이남기혁, 윤민홍
  • ISBN : 9788960771550
  • 30,000원
  • 2010년 10월 04일 펴냄 (절판)
  • 페이퍼백 | 512쪽 | 185*235mm
  • 시리즈 : 모바일 프로그래밍

판매처

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

책 소개

역동적인 아이폰 앱을 만들어보자

『코코아 터치 프로그래밍』과 함께 아이폰 앱 시장에 뛰어들어보자. 프로 개발자인 지바 드보의 친절한 설명과 함께 코코아 터치 프레임워크와 iOS SDK, 엑스코드, 게임 킷 API를 두루 살펴본다. 단계별로 구성된 예제를 참고해 애플리케이션을 직접 작성하고 서명해 앱스토어를 통한 판매에도 도전해보자. 아이폰 앱 개발에 처음 뛰어든 사람도 이 책의 도움을 받아 멋진 코드를 손쉽게 작성할 수 있다.


[ 이 책에서 다루는 내용 ]

■ 엑스코드, 인터페이스 빌더를 비롯한 다양한 도구 설명
■ 내비게이션과 커스텀 뷰를 사용하는 복잡한 GUI 구성
■ 코어 데이터를 통해 데이터베이스를 만들고, 엑스코드로 직접 스키마 설계
■ 아이폰의 멀티터치 기능을 이용한 애플리케이션 제작 방법
■ 애플 푸시 알림 서비스
■ 맵 킷 API로 맵 임베딩하기
■ 오디오 녹음, 비디오 재생, 아이팟 라이브러리 접근하는 방법
■ 개발 인증서를 받아 애플리케이션에 서명하는 방법
■ 스토어 킷으로 애플리케이션 안에서 부가 기능과 컨텐츠 판매

저자/역자 소개

[ 저자 서문 ]

이 책을 집필한 목적은 초보 아이폰 개발자와 경험이 있는 아이폰 개발자에게 유용한 정보를 제공하는 데 있다. 주로 아이폰 개발에 필요한 일반적인 기술을 포함하고 있어 이제 막 아이폰 개발자로 발돋움하려는 사람에게도 도움을 줄 수 있으리라 생각한다.

코코아 터치 프로그래밍과 관련한 책을 쓰는 일은 정말 어려운 작업이다. 독자의 실력을 판단하기가 매우 힘들기 때문이다. 오브젝티브C를 이미 알고 있을까? 맥OS X용 애플리케이션을 개발한 경험이 있을까? 책을 쓰기 시작할 때 스스로에게 던졌던 질문들이다.
결국 나는 새로운 개발자와 경험이 있는 개발자가 함께 읽을 수 있는 책을 쓰기로 결정했고, 모두에게 유용한 책을 쓰려고 노력했다.

아이폰 운영체제의 새로운 기술을 습득하고, 일반적인 아이폰 개발에 대해서도 배울 수 있는 기회를 제공했다.

여러분이 이미 어느 정도는 오브젝티브C에 익숙하며, 전문가일 필요는 없지만 어느 정도는 맥 OS X이나 아이폰 개발에 경험이 있으리라 가정했다.

맥 OS X 개발이나 아이폰 개발이 처음인 독자라면, 이 책과 함께 오브젝티브C와 관련된 책을 읽어보길 권한다. 시장에는 많은 책이 있지만, 다른 주제를 가지고 오브젝티브C를 다루는 책보다는 오브젝티브C 언어 자체에 중점을 둔 책을 권한다. 오브젝티브C 언어의 문법 등에 익숙해질 만큼 책을 읽었다면, 이 책의 1장을 열어도 문제가 없을 것이다.

이미 맥 OS X용 애플리케이션을 개발해봤지만, 아이폰용 애플리케이션을 개발한 적이 없다면, 이미 오브젝티브C는 잘 알고 있을 것이고 아이폰용 애플리케이션 개발에 사용되는 다양한 도구에도 익숙한 상태일 것이다. 아이폰 개발이 맥OS X 개발과 비슷하기는 하지만, 완전히 일치하지는 않는다. 따라서 1장은 건너뛰고 2장부터 시작해 아이폰 애플리케이션을 처음부터 개발하는 방법을 습득하자.

아이폰 개발에 경험이 있다면, 아이폰 개발과 관련된 기본적인 지식은 알고 있으므로, 아이폰 OS와 관련된 부분인 5장부터 찾아 보길 바란다. 이 책의 모든 장은 새롭게 업데이트된 아이폰 OS API를 기준으로 작성했다. 따라서 이미 UI 뷰 컨트롤러 등에 익숙한 상태라면 OS 3 이후에서 새로 추가된 기능들이 있는 5장부터 읽는 편이 바람직하다.

이 책은 마치 세 가지 주제를 따로 다루는 별도의 장이 있는 것처럼 작성됐기 때문에, 이 책을 위와 같은 방법으로 잘 활용하길 바란다.

부디 이 책이 흥미롭길 바란다. 개인적으로는 좋은 기술 서적을 책장에만 진열하지 않고, 책상의 한 켠에 늘 놓고 몇 번이고 참고한다. 이 책도 여러분에게 좋은 대접을 받길 바라며, 낡고 해질 때까지 몇 년이고 유용하게 사용해주길 바란다.

- 지바 드보
book@random-ideas.net


[ 저자 소개 ]

지바 드보(Jiva DeVoe)
25년간 소프트웨어를 제작해왔다. 코모도어 VIC-20에서 베이직과 어셈블리 언어로 작업을 시작했으며, C, C++, 파이썬, 루비, 자바 등을 거쳐 오브젝티브C를 이용해 소프트웨어를 개발한다. 2001년 맥용으로 우수한 애플리케이션을 제작하는 소프트웨어 전문 업체인 랜덤 아이디어스 LLC를 설립했다. 아이폰 SDK가 발표됐을 때는 SDK에 접근할 수 있는 개발자 중 한 명으로 선정돼, 2008년 7월 11일 앱스토어가 오픈할 때 지바 드보가 직접 만든 애플리케이션들도 함께 제공됐다. 그 후 드보의 애플리케이션들은 탑 100 애플리케이션에 들며 게임 분야에서 상을 수상하기도 했으며, 애플이 선정한 애플리케이션으로 선정되기도 했다. 현재는 훌륭한 아이폰 애플리케이션과 맥용 애플리케션을 개발하는 중으로, 아내, 세 명의 자녀, 두 마리의 바셋 하운드 사냥개와 함께 애리조나에 거주한다.


[ 옮긴이의 말 ]

코코아 터치는 아이팟, 아이폰, 아이패드용 애플리케이션을 제작하기 위해 애플에서 제공하는 프레임워크로서, 이름에서 알 수 있듯이 기존 맥 OS용 코코아 프레임워크를 iOS에 맞게 재구성한 것이다. 단순히 다양한 기능을 API로 표현하는 데 그치지 않고 오랜 기간 축적된 노하우와 디자인 패턴이 절묘하게 녹아 들어 있어서, 아이폰 앱 개발에 없어서는 안 될 필수 도구로 손꼽힌다.

이처럼 코코아 터치가 차지하는 큰 비중에 비해, 코코아 터치란 무엇인지조차 모르는 사람이 많아 코코아 터치의 개념 자체를 묻는 질문을 종종 받는다. 물론 앱스토어에서 엄청난 다운로드 수를 자랑하는 뛰어난 앱을 제작하면 그만일 수도 있지만, 코코아 터치에 대한 충분한 이해가 뒤따라 준다면 뛰어난 기획부터 앱스토어 등록에 이르는 시간을 단축시킬 수 있을 뿐만 아니라 애플리케이션의 품질도 향상시키는 데 도움이 될 거라 믿는다.

이 책에서는 오브젝티브C와 엑스코드 기반 개발 환경을 어느 정도 접해 본 개발자를 대상으로 코코아 터치 프레임워크에서 제공하는 전반적인 기능을 하나씩 설명한다. 하지만 예제 코드가 단계별로 소개되므로 처음 아이폰 개발에 뛰어든 독자도 직접 손과 눈으로 확인하면서 책에서 설명하는 내용을 쉽게 이해할 수 있으리라 생각한다. 예제 코드는 2010년 9월 중순 기준으로 최신 버전인 Xcode 3.2.4와 iOS SDK 4.1을 대상으로 했다.

물론 완전 초보를 위한 그대로 따라하기 스타일의 책이 아닌 만큼, 책을 읽고 생각하면서 코드를 직접 다뤄보면 훨씬 도움이 될 것이다. 마지막으로, 책을 읽으면서 애플 개발자 사이트의 iOS 레퍼런스 라이브러리(http://developer.apple.com/library/ios/navigation/)를 참조해 이 책에서 미처 다루지 못한 부분과 최신 iOS 버전에 맞는 정보를 보완해 이 책을 200% 활용하길 바란다.

- 남기혁


[ 옮긴이 소개 ]

남기혁
고려대 컴퓨터학과를 졸업하고 동 대학원 정형기법연구실에서 석사 학위를 받았다. 한국전자통신연구원에서 개인용 웹 플랫폼 및 서비스 기술에 대한 연구에 참여하고 있으며, 기술서적 번역과 자동차에 푹 빠져 살고 있다. 에이콘출판사에서 출간한 『GWT 구글 웹 툴킷』(2008)을 번역했다.

윤민홍
아름다운 아내와 귀염둥이 딸과 대전에서 살고 있는 8년차 연구원으로 임베디드 소프트웨어 분야에서 일하고 있다. 작은 버그를 수정하고 1%라도 성능을 높이는 것에 만족을 느끼는 소심한 연구원으로, 은퇴하는 날까지 프로그래밍을 즐기는 것이 소망이다.

목차

목차
  • 1부 개요
  • 1장 개발 도구 둘러보기
    • 엑스코드
    • 인터페이스 빌더
    • 정리
  • 2장 간단한 아이폰 애플리케이션 만들기
    • 템플릿을 이용한 프로젝트 생성
    • GUI 만들기
    • 간단한 UIViewControlle
    • 아이폰에서 돌려보기
    • 정리
  • 3장 시뮬레이터
    • 시뮬레이터 UI
      • 멀티터치 시뮬레이션
      • 코어 로케이션 시뮬레이션
      • 시뮬레이터 회전
      • 시뮬레이터 파일시스템
    • 시뮬레이터와 실제 하드웨어의 차이
      • 실제 하드웨어에서 동작하지 않는 API 사용 회피
      • 시뮬레이터와 하드웨어의 성능 차이
    • 정리
  • 2부 GUI
  • 4장 아이폰 UI 기초
    • 아이폰 홈 화면
    • 시네마틱 UX
    • 아이폰 내장 애플리케이션
    • 사용자와 UI 사이에 발생하는 상호 작용
    • 정리
  • 5장 UIViewController
    • 기본적인 모델, 뷰, 컨트롤러 디자인 패턴
    • UIViewController
    • UIViewController의 메소드 오버라이딩
      • 뷰 회전 관리
      • 메모리 경고 처리
    • UIViewController 사용
      • 코드 생성
      • UIViewController 헤더파일 작성
      • UIViewController 구현
      • 인터페이스 빌더에 컨트롤러 추가
      • UIApplicationDelegate 개요
      • 애플리케이션 델리게이트에서 모델 생성
      • 윈도우에 뷰 추가
    • 정리
  • 6장 UITableView
    • UITableViewDataSource와 UITableViewDelegate
      • UITableView와 NSIndexPath
      • UITableViewDataSource
      • UITableViewDelegate
    • 애플리케이션에 UITableView 추가하기
      • UITableViewDataSource 만들기
      • 애플리케이션 동작 확인
      • 행을 터치해 특정 동작을 수행하게 만들기
    • UITableView를 그룹 단위로 구성하기
      • 모델에 주 정보 추가하기
      • UITableViewDataSource 수정하기
    • UITableView의 고급 설정 기능
      • 테이블 가장자리에 알파벳 순으로 나열된 인덱스 추가하기
      • 검색창 추가하기
    • 정리
  • 7장 UITableViewCell
    • UITableViewCell
    • UITableViewCell에 이미지 추가하기
    • UITableViewCell에 대한 고급 커스터마이즈
    • 커스텀 셀 제작 시 고려할 성능 문제
    • UITableViewCell 재사용
      • 재사용 식별자
    • 정리
  • 8장 UINavigationController 내비게이션 모델
    • UINavigationController 모델
    • UINavigationController 제작
    • UINavigationController 설정
    • UIViewController 추가와 제거
    • UIToolbar 추가
    • 행 편집 기능
      • UINavigationController로 MyView 이동
      • EditViewController 제작
      • 행 편집
      • 행 추가
      • 행 삭제
    • 정리
  • 9장 UIApplicationDelegate
    • UIApplicationDelegate 존재 이유
    • 애플리케이션 시작과 종료
      • 애플리케이션 구동 시 호출되는 메소드
      • applicationWillTerminate 메소드
    • 애플리케이션 동작 중 메시지 수신
      • 자원 경고 처리
      • 전화 수신과 슬립 상태 처리
      • 상태 변화
      • 원격 알림 메시지 관리
    • 정리
  • 10장 커스텀 UIView
    • 코코아 터치 뷰 지오메트리
    • 프로젝트에 커스텀 뷰 추가하기
    • 커스텀 뷰 코드 작성하기
      • 코어 그래픽스
      • drawRect 작성하기
    • 정리
  • 11장 터치 이벤트 처리
    • 커스텀 UIView에서 멀티터치 처리
      • touchesBegan:withEvent: 구현
      • 터치정보 NSSet
      • touchesMoved:withEvent: 구현
      • touchesEnded:withEvent: 구현
      • 멀티터치 이벤트 처리
    • 터치 이벤트를 처리하도록 커스텀 뷰 예제 업데이트
      • 터치를 이용한 원 이동
      • 원 크기 조절 기능 추가
    • 정리
  • 12장 코코아 터치에서 제공하는 컨트롤
    • 코코아 터치에서 제공하는 여러 가지 컨트롤
    • UISlider
      • 인터페이스 빌더에서 UISlider 설정하기
      • UISlider 상태 업데이트하기
    • UITabBar
      • 인터페이스 빌더에서 UITabBar 설정하기
      • UITabBar에 UITabBarItem 추가하기
      • UITabBar 고급 기능 설정하기
      • UIPickerView
      • 인터페이스 빌더에서 UIPickerView 설정하기
      • UIPickerViewDataSource 생성하기
      • UIPickerView 델리게이트 생성하기
    • 정리
  • 13장 텍스트 입력 처리
    • 인터페이스 빌더를 이용한 키보드 설정
      • 대소문자 설정
      • 자동 완성 기능 활성화와 해제
      • 키보드 종류 설정
      • 리턴 키 동작 설정
      • 기타 설정
    • 코드를 이용한 키보드 설정
      • 키보드 표시
      • UITextInputTraits
    • 키보드 이벤트 처리
      • UITextFieldDelegate 생성
      • 키보드 표시를 위한 뷰 이동
    • 정리
  • 14장 코어 애니메이션으로 시네마틱 UI 만들기
    • UIView 애니메이션 메소드
    • CALayer를 이용한 코어 애니메이션 고급 기능
    • UIImageView를 이용한 애니메이션
    • 정리
  • 15장 OpenGL ES 사용
    • 아이폰의 OpenGL ES 기능
    • 기본적인 OpenGL 뷰 생성
    • 정리
  • 16장 사파리 이용하기
    • 아이폰 웹 브라우저로 URL 열기
    • UIWebView
      • 애플리케이션에 UIWebView 추가
      • URL 열기
      • UIWebViewDelegate 구현
      • 애플리케이션 번들에 있는 HTML 로딩하기
    • 정리
  • 3부 데이터 작업
  • 17장 사용자 데이터 저장
    • NSUserDefaults 객체 접근
    • NSUserDefaults에서 데이터 읽고 쓰기
    • 기본 사용자 데이터 설정
    • 애플리케이션 설정
      • 설정 번들 추가
      • 설정 내용 추가
    • 정리
  • 18장 코어 데이터를 이용한 데이터베이스
    • 코어 데이터 기본 구성
    • Favorite Cities 예제에 코어 데이터 지원 기능 추가
      • 애플리케이션 델리게이트 변경
      • Managed Object Model 활용
    • CRUD
      • 생성
      • 읽기
      • 업데이트
      • 삭제
      • Favorite Cities 예제 업데이트
    • 코어 데이터 활용 분야
    • 코어 데이터 활용에 부적합한 분야
    • 정리
  • 19장 네트워크로 외부와 통신
    • 웹 접근
      • 파운데이션 클래스에서 URL 사용
      • NSURLRequest와 NSURLConnection 사용
    • 메시지 UI 프레임워크를 이용해 애플리케이션에서 이메일 발송
    • 코어 파운데이션 소켓
      • CFSocket
      • CFHost를 이용한 호스트 정보 획득
      • CFStream
    • 봉주르 탐색
      • 봉주르 서비스 탐색
      • NSNetService
    • 정리
  • 20장 푸시 알림 서비스
    • 푸시 알림 서비스 구조
      • 푸시 알림 커뮤니케이션
      • 푸시 알림의 보안
    • 푸시 알림 메시지용 인증서
    • 서버단의 푸시 알림 서비스 개발
      • 루비로 작성한 푸시 알림 제공자
      • 푸시 알림 메시지 전송
      • 피드백을 이용한 전송 확인
    • 아이폰 클라이언트에서 푸시 알림 사용
      • 알림 메시지 수신 등록
      • 애플리케이션에서 알림 메시지 수신
    • 정리
  • 21장 게임킷 API
    • P2P 연결
      • 장치 검색
      • 세션 작업
    • 게임 내 음성 기능
    • 정리
  • 22장 잘라내기, 복사, 붙여넣기
    • 표준 컨트롤에서 복사와 붙여넣기 기능
    • 페이스트보드의 종류
    • UIPasteboard 사용
    • 커스텀 뷰에서 잘라내기, 복사하기, 붙여넣기
      • 메뉴 표시를 위한 touchesEnded:withEvent: 구현
      • copy: 메소드 구현
      • paste: 메소드 구현
      • 동작 방식
    • 정리
  • 23장 지도 API
    • MKMapView를 이용한 내장 지도 표시
      • MKMapView 생성
      • 지도 영역 지정
    • 지도 상에 설명 추가
      • 설명과 지도 성능과의 관계
    • 좌표 변환
    • 정리
  • 4부 미디어
  • 24장 아이폰에서 지원하는 미디어 타입
    • 아이폰에서 지원하는 오디오 포맷
      • 압축 방식 오디오 포맷
      • 비압축 방식 오디오 포맷
    • 아이폰에서 지원하는 비디오 포맷
    • 정리
  • 25장 오디오 재생
    • AV 파운데이션 프레임워크
      • AVAudioSession
      • AVAudioSessionDelegate
      • AVAudioPlayer로 오디오 재생하기
      • AVAudioPlayerDelegate
    • OpenAL로 오디오 재생하기
    • 정리
  • 26장 아이팟 라이브러리 접근
    • 미디어 플레이어 프레임워크 작업
    • 미디어 라이브러리 접근
      • MPMediaPickerController를 이용하는 방법
      • 미디어 검색
    • 플레이어 컨트롤러
    • 미디어 표지
    • 정리
  • 27장 오디오 녹음
    • AVAudionSession 설정
    • AVAudioRecorder 생성
    • 음성 녹음기 생성
    • 정리
  • 28장 애플리케이션에서 비디오 재생
    • 애플리케이션 번들에 포함된 비디오 파일 재생
    • 인터넷을 통한 비디오 재생
    • 정리
  • 5부 아이폰 하드웨어 다루기
  • 29장 디바이스
    • 정보 가져오기
  • 배터리 상태 확인
  • 접근 센서
  • 디바이스 메타데이타
  • 정리
  • 30장 코어 로케이션
    • 현재 위치 알아내기
      • CLLocationManager 할당하기
      • 델리게이트 설정
      • CLLocationManagerDelegate 프로토콜 구현
      • 위치 업데이트 시작과 중단
      • 구글 맵에 위치 표시하기
    • 좌표 오차 줄이기
    • 위치 정보 필터링
    • 완성된 예제 코드
    • 아이폰 3GS의 나침반 기능
    • 정리
  • 31장 가속도계
    • 현재 방향 알아내기
      • 기포 수준기 만들기
      • UIAcceleration 오브젝트
    • 쉐이크 이벤트
      • 쉐이크 이벤트 검출
      • drawRect
      • motionBegan과 motionEnded 작성하기
      • 모션 이벤트 취소하기
    • 정리
  • 32장 아이폰 주변 장치
    • 아이폰에 연결할 주변장치 생성하기
    • EAAccessoryManager로 현재 연결된 주변장치 찾기
    • EAAccessor 클래스
    • EASession
    • NSStream으로 디바이스와 통신하기
    • 정리
  • 6부 애플리케이션 배포
  • 33장 코드 서명
    • 개발 인증서 받기
    • 프로비저닝 프로세스
      • 개발, 배포, 애드혹 프로비저닝
      • 프로비저닝 프로파일 설치
      • 서명한 애플리케이션의 동작
      • 서명할 애플리케이션 설정하기
    • 애드혹 빌드
      • 엑스코드에서 빌드 설정하기
      • 사용자에게 배포하기
    • 정리
  • 34장 애플리케이션 확장
    • 판매할 수 있는 상품의 종류
    • 잠금 해제 컨텐츠
    • 아이튠즈 커넥트에 구매 가능한 컨텐츠 준비
    • 스토어 킷 작업
      • 컨텐츠 구매 기능 활성화 검사
      • 스토어 표시
      • 상품 구매
      • 과금 처리
      • 트랜잭션 유효성 검사
      • 컨텐츠 잠금 해제
      • 구매한 컨텐츠 복구
      • 애플리케이션 내 구매 테스트
  • 도서 오류 신고

    도서 오류 신고

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

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

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

    정오표

    [ p8 '옮긴이의 말' 마지막 행 ]
    http://www.aconrpub.co.kr/book/cocoatouch → http://www.acornpub.co.kr/book/cocoatouch