• 시작하세요! iOS 6 프로그래밍
  • iOS 6 SDK를 이용한 아이폰 개발

  • 데이브 마크, 잭 너팅, 제프 라마시, 프레드릭 올슨 지음
  • 유윤선 옮김

  • 임베디드 & 모바일 시리즈 _ 026
  • ISBN: 9788998139193
  • 40,000원 | 2013년 05월 3일 발행 | 814쪽



이 책은 이미 한국 독자들이 잘 알고 있는 『시작하세요! iOS 프로그래밍』 시리즈의 개정판이다. 이번 개정판에서는 새로워진 엑스코드 개발 환경 및 iOS 6 SDK에 맞게 전체 프로젝트를 모두 수정하고, iOS 6 SDK에서 새로 추가된 컬렉션 뷰를 다루는 장이 새로 추가됐다. 아울러 최신 엑스코드의 제약 기반 레이아웃을 활용해 뷰를 디자인하는 법과 검색 바 컨트롤러를 통한 검색 기능 구현, 어트리뷰트 문자열 같은 새로운 API 활용법, 새롭게 추가된 리터럴 구문을 활용하는 법 등 최신 iOS 개발 환경에서 달라진 점을 모두 반영하고 있다. 또, 최신 프로젝트 템플릿과 iOS 6 SDK의 달라진 메모리 관리 정책에 따라 모든 예제 코드의 메모리 관리 규칙을 모두 업데이트했고, 제약 기반 레이아웃에 따른 뷰 회전 처리 등에 대해서 빠짐없이 다루고 있다. 한마디로, 이 책은 최신 iOS 플랫폼에서 프로그래밍을 시작하는 데 필요한 모든 최신 기법과 모범 접근 방식을 집대성한 바이블이다.

이 책의 예제들은 모두 이전과 같은 애플리케이션을 개발하지만 접근 방식만큼은 크게 달라졌다. 일례로 애플의 권고에 따라 인스턴스 변수를 합성하는 코드를 모두 제거했으며, 암시적 합성 방식을 따르고 있다. 또 어트리뷰트 문자열을 활용한 스타일 지정 같은 새로운 API 요소를 기존 예제에 최대한 반영했으며, 간단한 딕셔너리나 목록에는 리터럴을 선언해 리터럴 구문에 익숙한 다른 언어 개발자들이 좀 더 쉽게 프로그램을 이해할 수 있게 배려했다. 또 달라진 메모리 관리 정책으로 인해 더는 호출되지 않는 viewDidUnload 메서드와 같은 코드를 예제 코드에서 모두 제거함으로써 iOS 개발자들이 최신 SDK에서 꼭 필요한 콜백 메서드만 구현하게끔 했다. 따라서 이 책은 iOS 개발에 입문하는 초보자뿐 아니라 최신 모범 기법을 익히려는 사람이라면 누구나 참고할 만하다.

전 세계 독자가 인정한 베스트셀러 아이폰 개발서!

《시작하세요! iOS 6 프로그래밍》으로 자신만의 아이폰 앱과 아이패드 앱을 개발하는 법을 배우자.《시작하세요! iOS 6 프로그래밍》은 오브젝티브-C에 대한 최소한의 지식만을 전제한 후 친근하고, 따라 하기 쉬운 방식으로 아이폰, 아이패드, 아이팟 터치 프로그래밍을 기초부터 고급 내용까지 모두 소개한다.

개발 전문가들이 안내해주는 설명에 따라 이 책에서는 검증된 기법을 배우고 코드를 최적화하는 모범 기법과 훌륭한 사용자 경험을 전달하는 법을 배울 수 있다.

★ 이 책에서 다루는 내용 ★

  • 엑스코드와 iOS 6 SDK를 내려받고 설치하는 법
  • 핀치, 스와이프 같은 멀티터치 제스처 지원 기능
  • 카메라, 사진 라이브러리, 내장 GPS 연동법
  • 테이블과 컬렉션 뷰를 활용한 풍부한 사용자 인터페이스 개발법
  • 코어 데이터와 SQLite를 활용한 데이터 저장 및 조회법
  • 쿼츠 2D와 오픈지엘 ES를 활용한 드로잉
  • 단일 뷰부터 복잡한 드릴다운 뷰에 이르기까지 다양한 디자인 패턴을 마스터하는 법
  • 다국어 지원을 위한 앱 지역화 방법
  • 앱과 아이클라우드 연동법

새 개정판인 이 책에서는 애플의 최신 iOS 6 SDK와 엑스코드를 활용하는 법을 보여준다. 모든 예제 앱은 최신 엑스코드와 iOS 6 프로젝트 템플릿을 활용해 처음부터 다시 개발했다. 《시작하세요! iOS 6 프로그래밍》에서는 최신 iOS 기기용 앱을 개발하는 데 필요한 최신 지식과 기술을 모두 제공한다.

데이브 마크(Dave Mark)

데이브 마크는 경험이 풍부한 맥 개발자이자 저자로, 맥과 iOS 개발과 관련한 다양한 책을 저술했다. 저서로는 ‘Beginning iPhone 4 Development(Apress, 2011)’, ‘More iPhone 3 Development (Apress, 2010)’, ‘Learn C on the Mac (Apress, 2008)’, ‘Ultimate Mac Programming (Wiley, 1995)’, ‘Macintosh Programming Primer 시리즈(Addison-Wesley, 1992)’ 등이 있다. 데이브는 iOS와 안드로이드 개발 업체인 MartianCraft의 설립자였다. 그는 물을 좋아하며 가능한 한 물가 근처에서 많은 시간을 보낸다. 데이브는 아내, 세 아이와 함께 버지니아에서 살고 있다.

잭 너팅(Jack Nutting)

잭 너팅은 코코아를 코코아라고 부르기 전부터 코코아를 사용했다. 잭은 코코아와 코코아의 전신을 활용해 게임, 그래픽 디자인, 온라인 디지털 배포, 텔레콤, 금융, 출판, 여행 등 다양한 산업 분야의 애플리케이션을 개발했다. 잭은 오브젝티브-C와 코코아 프레임워크의 열렬한 지지자다. 잭은 ‘Beginning iPhone 4 Development(Apress, 2011)’, ‘Learn Cocoa on the Mac(Apress, 2010)’과 ‘Beginning iPad Development for iPhone Developers(Apress, 2010)’의 주요 저자다. 잭은 이따금씩 http://www.nuthole.com에 블로그 글을 남긴다.

제프 라마시(Jeff LaMarche)

제프 라마시는 20년 이상 프로그래밍을 해온 맥과 iOS 개발자다. 제프는 'Beginning iPhone 4 Development(Apress, 20011)', 'More iPhone 3 Development(Apress, 2010)', 'Learn Cocoa on the Mac(Apress, 2010)' 등 다양한 iOS와 맥 관련 책을 저술했다. 제프도 iOS와 안드로이드 개발 업체인 MartianCraft의 대표다. 제프는 MacTech Magazine뿐 아니라 애플의 개발자 사이트에도 코코아와 오브젝티브-C에 관한 글을 기고한 바 있다. 또 제프는 많은 사람이 구독하는 자신의 블로그인 http://iphonedevelopment.blogspot.com에 iOS 개발에 대한 내용을 쓰고 있다.

프레드릭 올슨(Fredrik Olsson)

프레드릭 올슨은 맥 OS X 10.1부터 코코아를 사용했고, 공식 툴체인이 배포되기 전부터 아이폰 프로그래밍을 했다. 프레드릭은 실시간 어셈블리부터 엔터프라이즈 자바에 이르기까지 풍부하고 다양한 경력을 갖고 있다. 그는 오브젝티브-C 언어의 우아함과 코코아 프레임워크의 명쾌함을 무척 좋아하며 이 둘이 함께 만들어내는 시너지를 좋아한다. 키보드 앞에 앉아 있지 않을 때 프레드릭은 컨퍼런스에서 연설을 하거나 개발자 교육을 담당한다.

유윤선

인디 개발자이자 프리랜서 번역가로 활동 중이다. 이따금 http://joshy21.com/weblog에 번역과 상관없는 글을 올리고 있다. 역서로는 《프로페셔널 Node.js 프로그래밍 (위키북스)》《NoSQL 프로그래밍》《프로 스프링 3》《라이프해커》《시작하세요! 아이폰 5 프로그래밍》《안드로이드 레시피》《시작하세요! Unity 3D 게임 프로그래밍》《시작하세요! 안드로이드 게임 프로그래밍》《시작하세요! 아이폰 4 프로그래밍》《플래시 빌더 4 & 플렉스 4 바이블》《쉽고 빠르게 익히는 CSS3》《스프링 시큐리티 3》《시작하세요! 아이패드 프로그래밍》, 《오브젝티브 C 개발 레시피 (길벗)》《프로 제이쿼리 완벽 마스터》《5일 만에 아이폰 앱 개발하기》《WebGL 개발 입문》, 《플래시 게임 마스터(에이콘출판사)》, 《Adobe AIR 인 액션(위키북스, 공역)》, 《스프링 3 레시피(위키북스, 공역)》, 《액션스크립트 3.0 완벽가이드(인사이트, 공역)》 등이 있다.

  • ▣ 01장: 정글에 온 것을 환영한다
    • 이 책에 대한 소개
    • 책에 필요한 도구
      • 개발자 옵션
      • 이 책의 내용을 이해하는 데 필요한 배경 지식
    • iOS 코딩의 차이점
      • 단 하나뿐인 활성 애플리케이션
      • 단 하나뿐인 창
      • 제한된 접근
      • 제한된 응답 시간
      • 제한된 화면 크기
      • 제한된 시스템 자원
      • 가비지 컬렉션은 없지만...
      • 코코아 터치의 고유 기능
      • 다른 접근 방식
    • 이 책에서 다루는 내용
    • 개정판에서 달라진 점
    • 시작할 준비가 끝났는가?
    •  
  • ▣ 02장: 티키 신 달래기
    • 엑스코드에서의 프로젝트 설정
      • 엑스코드 워크스페이스 창
      • 프로젝트 자세히 살펴보기
    • 엑스코드 인터페이스 빌더의 소개
    • nib 파일에 포함된 내용
      • 라이브러리
      • 뷰에 라벨 추가하기
      • 어트리뷰트 변경
    • 마지막 다듬기 - 화룡점정
    • 정리
    •  
  • ▣ 03장: 기본 상호작용 처리
    • 모델-뷰-컨트롤러 패러다임
    • 프로젝트의 생성
    • 뷰 컨트롤러 살펴보기
      • 아웃렛과 액션의 이해
      • 뷰 컨트롤러 정리하기
      • UI 디자인
      • 테스트
      • 스타일 추가
    • 애플리케이션 델리게이트 살펴보기
    • 내용 정리
    •  
  • ▣ 04장: 더 재미있는 사용자 인터페이스
    • 컨트롤로 가득 찬 화면
    • 능동적, 정적, 수동적 컨트롤
    • 애플리케이션의 생성
    • 이미지 뷰와 텍스트 필드의 구현
      • 이미지 뷰의 추가
      • 이미지 뷰의 크기 조절
      • 뷰 어트리뷰트의 설정
      • 텍스트 필드 추가
      • 아웃렛의 생성과 연결
    • 키보드 닫기
      • Done을 탭할 때 키보드 닫기
      • 배경을 터치할 때 키보드 닫기
      • 슬라이더와 라벨 추가
      • 상단 위치 제약의 추가
      • 액션 및 아웃렛의 생성과 연결
      • 액션 메서드 구현
    • 스위치, 버튼, 분할 컨트롤의 구현
      • 스위치 액션 구현
    • 분할 컨트롤의 액션 구현
    • 액션 시트와 경고창 구현
      • 액션 시트 델리게이트 메서드의 프로토콜 따르기
      • 액션 시트 보여주기
    • 버튼 꾸미기
      • viewDidLoad 메서드의 활용
      • 컨트롤 상태
      • 확장 가능 이미지
    • 결승선 통과하기
    •  
  • ▣ 05장: 자동 회전과 자동 크기 조절
    • 자동 회전 기법
      • 포인트, 픽셀, 레티나 디스플레이
      • 자동 회전 접근 방식
    • 뷰 방향 선택
      • 앱 전역 지원 방향 설정
      • 컨트롤러별 지원 방향 설정
    • 제약을 활용한 인터페이스 디자인
      • 기본 제약 재정의
      • 전체 너비 버튼
    • 기기 회전 시 뷰 구조의 변경
      • 아웃렛의 생성과 연결
      • 회전 시 버튼 움직이기
    • 뷰 대체하기
      • 두 개의 뷰 디자인
      • 뷰 대체 기능 구현하기
      • 아웃렛 컬렉션의 수정
    • 이곳에서 빠져나가기
    •  
  • ▣ 06장: 멀티뷰 애플리케이션
    • 자주 사용하는 멀티뷰 애플리케이션 형태
    • 멀티뷰 애플리케이션의 아키텍처
      • 루트 컨트롤러
      • 콘텐츠 뷰의 해부
    • View Switcher 애플리케이션 개발
      • 뷰 컨트롤러 및 Nib 파일 생성
      • 애플리케이션 델리게이트의 수정
      • BIDSwitchViewController.h 수정
      • 뷰 컨트롤러 추가
      • 툴바를 활용한 뷰 개발
      • 루트 뷰 컨트롤러 작성
      • 콘텐츠 뷰 구현
      • 화면 전환 애니메이션
    • 스위치를 내릴 시간
    •  
  • ▣ 07장: 탭 바와 피커
    • Pickers 애플리케이션
    • 델리게이트와 데이터 소스
    • 탭 바 프레임워크 설정
      • 파일 생성
      • 루트 뷰 컨트롤러 추가
      • TabBarController.xib 생성
      • 초기 테스트 실행
    • 데이트 피커 구현
    • 단일 컴포넌트 피커 구현
      • 아웃렛과 액션 선언
      • 뷰 개발
      • 데이터 소스와 델리게이트로 활용할 컨트롤러 구현
    • 멀티 컴포넌트 피커 구현
      • 아웃렛과 액션 선언
      • 뷰 개발
      • 컨트롤러 구현
    • 의존 컴포넌트 구현
    • 커스텀 피커를 활용한 간단한 게임 개발
      • 컨트롤러 헤더 파일 작성
      • 뷰 개발
      • 이미지 자원 추가
      • 컨트롤러 구현
      • 마지막 세부 사항
      • Audio Toolbox 프레임워크 연결
    • 마지막 스핀
    •  
  • ▣ 08장: 테이블 뷰
    • 테이블 뷰의 기본
      • 테이블 뷰와 테이블 뷰 셀
      • 그룹 테이블과 일반 테이블
    • 간단한 테이블 구현
      • 뷰 디자인
      • 컨트롤러 작성
      • 이미지 추가
      • 테이블 뷰의 셀 스타일 활용
      • 들여쓰기 수준 설정
      • 선택한 행 처리
      • 폰트 크기와 행 크기 변경
    • 테이블 뷰 셀 커스터마이징
      • 테이블 뷰 셀에 하위 뷰 추가
      • UITableViewCell 하위 클래스 작성
      • Nib을 이용한 UITableViewCell 로드
    • 그룹과 인덱스 섹션
      • 뷰 개발
      • 데이터 불러오기
      • 컨트롤러 구현
      • 인덱스 추가
    • 검색 바 구현
      • 내비게이션 바 추가
    • 한 테이블 위에 올려놓고 정리하기
    •  
  • ▣ 09장: 내비게이션 컨트롤러와 테이블 뷰
    • 내비게이션 컨트롤러의 기본
      • 스택이란?
      • 컨트롤러의 스택
    • 6개 영역으로 구성된 계층적 애플리케이션 Nav
      • 하위 컨트롤러 살펴보기
      • Nav 애플리케이션의 골격
      • 프로젝트에 이미지 추가
      • 첫 번째 하위 컨트롤러: 더 보기 버튼 뷰
      • 두 번째 하위 컨트롤러: 체크리스트
      • 세 번째 하위 컨트롤러: 테이블 행 내의 컨트롤
      • 네 번째 하위 컨트롤러: 이동할 수 있는 행
      • 다섯 번째 하위 컨트롤러: 삭제할 수 있는 행
      • 여섯 번째 하위 컨트롤러: 편집할 수 있는 상세 영역
      • 수정할 수 있는 상세 뷰 컨트롤러 인스턴스 추가
    • 그런데 남은 작업이 한 개 더 있다. . .
    • 결승선 끊기
    •  
  • ▣ 10장: 스토리보드
    • 간단한 스토리보드 개발
    • 동적 프로토타입 셀
      • 스토리보드를 활용한 동적인 테이블 콘텐츠
      • 프로토타입 셀 편집
      • 익숙한 테이블 뷰 데이터 소스
      • 로드될까?
    • 정적 셀
      • 정적 셀 작업
      • 안녕, 테이블 뷰 데이터 소스
    • 세그웨이
      • 세그웨이 내비게이터 개발
      • 빈 공간 채우기
      • 첫 번째 화면 전환
      • 조금 더 유용한 할 일 목록
      • 할 일 상세 화면
      • 더 많은 세그웨이 생성
      • 리스트에서 할 일 넘겨주기
      • 할 일 상세보기 처리
      • 상세 값 다시 전달하기
      • 리스트가 상세 값 받게 하기
      • 다음 장으로의 부드러운 전환
    •  
  • ▣ 11장: 아이패드에 대한 고려사항
    • 분할 뷰와 팝오버
      • 분할 뷰 프로젝트 생성
      • 템플릿 구조가 정의된 스토리보드
      • 기능을 정의한 코드
    • 대통령님이 오십니다
    • 커스텀 팝오버의 생성
    • 아이패드 마무리
    •  
  • ▣ 12장: 애플리케이션 설정과 사용자 기본값
    • 설정 번들 이해하기
    • AppSettings 애플리케이션
      • 프로젝트 생성
      • 설정 번들 활용
      • 애플리케이션에서 설정 읽기
      • 애플리케이션 내에서의 기본값 수정
      • 기본값의 등록
      • 실제처럼 만들기
    • 스코티, 날 전송해줘
    •  
  • ▣ 13장: 데이터 영속성의 기본
    • 애플리케이션의 샌드박스
      • Documents 디렉터리 접근
      • tmp 디렉터리 접근
    • 파일 저장 전략
      • 단일 파일을 활용한 영속화
      • 여러 파일을 활용한 영속화
    • 프로퍼티 리스트 활용
      • 프로퍼티 리스트 직렬화
      • Persistence 애플리케이션의 첫 번째 버전
    • 모델 객체 아카이빙
      • NSCoding 프로토콜 따르기
      • NSCopying의 구현
      • 데이터 객체의 아카이빙 및 아카이빙 해제
      • 아카이빙 애플리케이션
    • iOS의 임베디드 SQLite3 활용
      • 데이터베이스 생성과 열기
      • 바인드 변수 활용
      • SQLite3 애플리케이션
    • 코어 데이터 활용
      • 엔티티와 관리 객체
      • 코어 데이터 애플리케이션
    • 영구적인 보상
    •  
  • ▣ 14장: 아이클라우드 시작하기
    • UIDocument를 활용한 문서 저장소 관리
    • TinyPix 개발
    • BIDTinyPixDocument 생성
    • 코드 마스터
    • 초기 스토리보드 작업
    • BIDTinyPixView 개발
    • 상세 뷰 스토리보드
    • 아이클라우드 지원 기능 추가
      • 프로비저닝 프로파일 생성
      • 아이클라우드 지원 활성화
      • 조회 방법
      • 어디에 저장할까?
      • 아이클라우드에 환경설정 저장하기
    • 이 장에서 다루지 않은 내용
    •  
  • ▣ 15장: 그랜드 센트럴 디스패치, 백그라운드 처리, 그리고 여러분
    • 그랜드 센트럴 디스패치
    • SlowWorker 소개
    • 스레딩의 기본
    • 작업 단위
    • GCD: 저수준 큐
      • 블록헤드 되기
      • SlowWorker 개선
    • 백그라운드 처리
      • 애플리케이션 생명 주기
      • 상태 변화 알림
      • State Lab 애플리케이션 개발
      • 실행 상태 살펴보기
      • 실행 상태 변화 활용
      • 비활성 상태의 처리
      • 백그라운드 상태의 처리
    • 그랜드 센트럴 디스패치, 통신 끝!
    •  
  • ▣ 16장: 쿼츠와 오픈지엘을 활용한 드로잉
    • 그래픽 세계의 두 가지 뷰
    • 쿼츠 2D의 드로잉 접근 방식
      • 쿼츠 2D의 그래픽 컨텍스트
      • 좌표계
      • 색상 지정
      • 컨텍스트 내에서의 이미지 드로잉
      • 다각형, 선, 곡선 그리기
      • 쿼츠 2D 툴을 이용한 패턴, 그라이언트, 점선 패턴 예제
    • QuartzFun 애플리케이션
      • QuartzFun 애플리케이션의 설정
      • 쿼츠 2D 드로잉 코드 추가
      • QuartzFun 애플리케이션의 최적화
    • GLFun 애플리케이션
      • GLFun 애플리케이션 설정
      • BIDGLFunView의 생성
      • BIDViewController 업데이트
      • Nib 파일 업데이트
      • GLFun 애플리케이션 마무리
    • 끝이 가까워지고 있다
    •  
  • ▣ 17장: 탭, 터치, 제스처
    • 멀티터치 관련 용어
    • 리스폰더 체인
      • 이벤트에 반응하기
      • 리스폰더 체인을 활용한 이벤트 전달
    • 멀티터치 아키텍처
    • 네 개의 터치 알림 메서드
    • TouchExplorer 애플리케이션
    • Swipes 애플리케이션
      • 자동 제스처 인식
      • 다중 스와이프 구현
    • 멀티 탭 감지
    • 핀치 및 회전 감지
    • 커스텀 제스처 정의
      • CheckPlease 애플리케이션
      • CheckPlease 터치 메서드
    • 저기요? 확인 부탁해요!
    •  
  • ▣ 18장: 여기는 어디? 코어 로케이션을 활용한 길 찾기
    • 위치 관리자
      • 원하는 정확도 설정
      • 거리 필터 설정
      • 위치 관리자의 사용 시작
      • 위치 관리자의 현명한 활용법
    • 위치 관리자 델리게이트
      • 위치 업데이트 받기
      • CLLocation을 활용한 위도와 경도 파악
      • 에러 알림
    • 코어 로케이션 활용
      • 위치 관리자 업데이트
    • 지도상에서의 움직임 시각화
    • 어디를 가든, 그 자리에 여러분이 있다
    •  
  • ▣ 19장: 야호! 자이로와 가속도계!
    • 가속도계 물리 이론
    • 회전을 잊지 말자
    • 코어 모션과 모션 관리자
      • 이벤트 기반 모션
      • 적극적인 모션 접근
      • 가속도계의 결과
    • 흔들림 감지
      • 흔들림 감지 내장 기능
      • 흔들어서 깨뜨리기
    • 가속도계를 활용한 방향 제어
      • 구슬 굴리기
      • BIDBallView 작성
      • 구슬의 움직임 계산
    • 계속 구르기
    •  
  • ▣ 20장: 카메라와 사진 라이브러리
    • 이미지 피커와 UIImagePickerController 활용
    • 이미지 피커 컨트롤러 델리게이트 구현
    • 카메라와 사진 라이브러리의 길거리 테스트
      • 인터페이스 디자인
      • 카메라 뷰 컨트롤러 구현
    • 식은 죽 먹기!
    •  
  • ▣ 21장: 컬렉션 뷰
    • DialogViewer 프로젝트 생성
    • 뷰 컨트롤러 클래스 수정
    • 커스텀 셀 정의
    • 뷰 컨트롤러 설정
    • 콘텐츠 셀 제공
    • 레이아웃 흐름 지정
    • 헤더 뷰 제공
    • 정리하며
    •  
  • ▣ 22장: 애플리케이션 지역화
    • 지역화 아키텍처
    • 문자열 파일
      • 문자열 파일 내용
      • 지역화된 문자열 매크로
    • 실전 iOS 애플리케이션의 지역화
      • LocalizeMe 애플리케이션 설정
      • LocalizeMe 애플리케이션 테스트
      • Nib 파일 지역화
      • 이미지의 지역화
      • 문자열 파일 생성과 지역화
      • 기반 지역화
      • 애플리케이션 표시 이름의 지역화
    • 안녕, 또 만나요
    •  
  • ▣ 부록A: 이제 어디로?
    • 애플의 문서
    • 메일링 목록
    • 토론 포럼
    • 웹사이트
    • 블로그
    • 컨퍼런스
    • 저자 트위터 팔로우
    • 작별 인사

예제코드 관련 GitHub 페이지

관련 글