필자는 처음 아이폰이 발표되었을 때 상당한 충격을 받았습니다. 그리고 아이폰을 통해서 그동안 모르고 지냈던 새로운 세계를 발견하게 되었습니다. 아이폰 SDK로 애플리케이션을 개발하고, 앱 스토어를 통해서 제품을 판매하는 여러가지 과정을 경험하면서 앱스토어가 가지고 올 새로운 변화에 주목하게 되었습니다. 애플은 완전히 새로운 생태계(Ecosystem)인 앱스토어를 성공적으로 만들어냈습니다. 앱스토어를 통해서 개발자는 자기가 개발한 애플리케이션을 손쉽게 세상에 내 놓을 수 있게 되었습니다. 어제 개발한 애플리케이션이 내일이면 미국, 멕시코, 유럽 등 세계 모든 곳으로 퍼져 나갑니다. 지금껏 가지지 못한 배포의 자유를 얻게 된 것입니다.
필자는 이 책에서 아이폰 애플리케이션을 개발하기 위한 모든 내용을 설명할 것입니다. 그리고 모든 내용을 아이폰 SDK 3.0을 기준으로 작성했습니다. 이 책의 목적은 독자가 아이폰 애플리케이션을 쉽게 개발하고 세상에 내 놓을 수 있도록 하는 것입니다.
읽기 쉽고 재미있는 책을 만들기 위해서 그림과 삽화를 최대한 넣으려고 노력했습니다. 또한 모든 주제에 대해 예제를 이용해서 직접 개발할 수 있도록 했습니다. 예제는 (특별한 언급이 없는 한) 모두 필자가 개발하고 실제 장비에서 테스트를 진행한 것입니다. 특히 푸시 통보 서비스(Push Notification)를 제공하는 서버 구현 방법을 윈도우와 리눅스 플랫폼에 대해서도 설명했습니다. 그리고 스토어 킷을 통해서 직접 제품을 등록하고 판매할 수 있도록 한 지하철 노선도 예제도 자랑할 만한 예제 입니다. 그 외에도 인터넷 라디오, 게임킷을 활용한 예제, 멀티 터치와 OpenGL 예제 등 재미있는 예제가 많습니다.
이 책이 아이폰 애플리케이션을 개발하고자 하는 독자들에게 좋은 출발점이 될 수 있다면 더 이상 바랄것이 없을 것입니다.
감사의 글
먼저 책의 출판을 결정해 주신 인사이트 출판사의 한기성 사장님에게 감사 드립니다. 그리고 정말 놀라운 꼼꼼함으로 이 책의 수많은 오류를 잡아주신 김승호 편집자님에게 감사의 마음을 전합니다. 아직 이 책에 오류가 남아있다면 모두 필자의 탓입니다.
책의 4장을 리뷰해 주신 이창희(http://www.cocoadev.co.kr/)님, 3장과 13장을 리뷰해 주신 박종암(http://jongampark.wordpress.com/)님에게 감사의 마음을 전합니다.
7장의 MD2 예제의 주요 클래스를 구현하고 이 책에서 사용할 수 있도록 허락해 준 제임스 휘(James Hui)에게 감사의 마음을 전합니다. 그리고 8장의 스트림 예제에서 사용된 클래스를 작성해서 이 책에서 사용할 수 있도록 허락해 준 맷 갤래거(Matt Gallagher)에게도 감사의 말을 전합니다.
마지막으로 언제나 옆에서 든든한 지원군이 되어준 아내와 곧 태어날 딸에게도 사랑을 전합니다.
2009.7.18
강덕진
목차는 다음과 같습니다.
1장 안녕! 아이폰!
1.1 아이폰의 등장
1.2 아이폰/ 아이팟 터치 모델
1.3 아이폰 OS 3.0의 새로운 기능
1.4 이 책이 다루는 내용
1.5 새로운 도전
2장. 설치 및 개발 환경 구축
2.1. 개발에 필요한 시스템
2.1.1. 개발에 필요한 시스템 사양
2.2. 아이폰 SDK 설치
2.2.1 아이폰 SDK 설치하기
2.3. Xcode
2.3.1. 프로젝트 템플릿
2.3.2 Xcode 화면 구성
2.4 인터페이스 빌더
2.4.1 인스펙터
2.4.2 라이브러리
2.4.3 문서 창
2.4.4 연결 패널
2.5 도움말 접근하기
2.5.1. 조사 도우미
2.5.2. 도움말 창
2.5.3 고급 검색
2.5.4. 편집기의 문자열을 도움말 창에서 바로 검색하기
2.5.5 도움말 문서의 형태
2.6 아이폰 레퍼런스 프로젝트
2.6.1 프로젝트 생성
2.6.2 인터페이스 빌더로 화면 디자인하기
2.6.3 코드 입력하기
2.7. 아이폰 시뮬레이터
2.7.1 터치 조작
2.7.2 리셋하기
2.8 정리
2.8.1 참고 사이트
3장 동작 환경 이해하기
3.1 아이폰 동작 환경
3.2 애플리케이션 번들
3.3 Info.pList 파일
3.4 애플리케이션 델리게이트
3.5 핵심 디자인 패턴
3.5.1 델리게이트(delegate)
3.5.2 데이터 소스(Data Sources)
3.5.3 타깃-액션 (Target-Action)
3.5.4 통보(Notification)
3.5.5 키-값 감시(Key-Value Observing)
3.6 아이폰 링크
3.6.1 메일
3.6.2 전화 걸기
3.6.3 문자(SMS) 보내기
3.6.4 지도 보기
3.6.5 아이튠스
3.6.6 유튜브(U-Tube) 연결하기
3.7 커스텀 URL 스키마 만들기
3.8 정리
4장 화면을 이루는 기본 : 뷰
4.1 UIWindow
4.2 UIView와 UIViewController
4.3 뷰를 직접 만들어 보자
4.3.1 이미지 준비
4.3.2 코드 작성
4.3.3 직접 만든 뷰를 화면에 추가하기
4.4 UI 브로슈어 프로젝트
4.5 이미지 뷰(UIImageView)
4.5.1 인터페이스 빌더를 이용한 화면 디자인
4.5.2 코드 작성
4.5.3 이미지 선택하기
4.5.4 애니메이션 설정
4.6 웹 뷰(UIWebView)
4.6.1 디자인하기
4.6.2 코드 작성하기
4.6.3 PDF를 보여주자
4.7 텍스트 입력과 키보드
4.7.1 화면 구성
4.7.2 코드 작성
4.7.3 키보드 숨기기 팁
4.7.4 키보드 관련 통보(Notification) 이용하기
4.8 피커 뷰
4.8.1 코드 분석
4.8.2 슬롯머신 게임 만들어 보기
4.8.3 XIB에 객체 추가하기
4.8.4 로직 구현
4.9 알림, 경고창
4.9.1 인터페이스 빌더에서 클래스 내보내기
4.9.2 병합하기
4.9.3 UIAlertView 코드 작성
4.9.4 UIActionSheet 코드작성
4.10 스크롤 뷰
4.10.1 스크롤, 확대, 축소 구현하기
4.10.2 스크롤에 따른 지도확장
4.10.3 확대에 따른 지도 재설정
4.10.4 자바스크립트에서 Objective-C 객체에 이벤트 보내기
4.11 맵 뷰(MKMapView)
4.11.1 화면 디자인
4.11.2 코드 작성
4.11.3 직접 표시 추가하기
4.11.4 표시 직접 구현하기
4.12 정리
5장 뷰를 담는 그릇 : 뷰 컨트롤러
5.1 회전에 대비하기
5.1.1 자동 회전(AutoRotate)
5.1.2 자동 크기 조절
5.1.3 자동 크기조절의 한계
5.2 테이블 뷰와 테이블 뷰 컨트롤러
5.2.1 데이터 소스
5.2.2 인덱스 이용하기
5.2.3 셀을 직접 꾸미기
5.2.4 검색 기능 넣기
5.2.5 테이블 뷰 정리
5.3 내비게이션 컨트롤러
5.3.1 내비게이션 컨트롤러 생성하기
5.3.2 내비게이션 아이템 설정
5.3.3 편집 / 완료
5.3.4 테이블 뷰의 항목 이동
5.4 탭 바 컨트롤러
5.4.1. 구현하기
5.4.2 탭 바 아이콘
5.4.3 배지(Badge)
5.5 이미지 피커
5.6 이메일 뷰 컨트롤러
5.7 정리
6장. 이벤트 처리
6.1 UIResponder와 응답 체인
6.1.1 기본 메서드
6.1.2 아이폰 OS 3.0에 추가된 메서드
6.1.3 UIResponder 체인 메서드
6.1.4 이벤트 흐름
6.2 멀티 터치 동작 원리
6.2.1 첫 번째 손가락
6.2.2 손가락 움직이기
6.2.3 멀티 터치
6.2.4 손 때기
6.3 멀티 터치 구현하기
6.4 두드림(tap)
6.5 닦아내기(Swipe)와 집기(Pinch)
6.5.1 닦아내기
6.5.2 집기(Pinch) 동작
6.6 흔들기와 실행 취소, 실행 복귀
6.6.1 NSUndoManager
6.7 베껴두기와 붙이기
6.8 정리하기
7장. 그래픽과 애니메이션
7.1 쿼츠(Quartz)
7.1.1 직선 그리기
7.1.2 사각형
7.1.3 다각형 그리기
7.1.4 이미지/비트맵 그리기
7.1.5 PDF 그리기
7.1.6 그래디언트 (Gradient)
7.1.7 글꼴 (Font)
7.1.8 베지어(Bezier) 곡선
7.1.9 쿼츠 정리
7.2 코어 애니메이션
7.2.1 속성 변화 애니메이션
7.2.2 고급 속성 변화 애니메이션
7.2.3 전환 효과 (Transition)
7.3 UIView 애니메이션
7.4 OpenGL
7.4.1 프로젝트 생성
7.4.2 MD2 모델 뷰어
7.4.3 OpenGL 정리
7.5 정리
8장. 동영상과 사운드
8.1. 오디오 형식
8.2 오디오 재생
8.2.1 짧은 효과음과 진동
8.2.2 일반 오디오 재생하기
8.2.3 AVAudioPlayer로 재생하기
8.3 오디오 큐 서비스
8.3.1 녹음하기
8.3.2 녹음 시간 표시하기
8.3.3 재생하기
8.3.4 UI 업데이트를 위한 콜백
8.4 오디오 세션
8.4.1 AVAudioSession
8.5 네트워크 오디오 스트림
8.6. 동영상 재생
8.7 아이튠스 라이브러리 접근하기
8.8 정리
9장. 아이폰 자원 활용
9.1 장치 정보 얻기
9.2 가속도계 이용하기
9.3 주소록 프레임워크
9.3.1 검색하기
9.3.2 수정하기
9.3.3 주소록 UI (AddressbookUI)
9.4 파일에 저장하기
9.4.1 접근할 수 있는 디렉터리
9.4.2 프로퍼티 리스트
9.4.3 고급 프로퍼티 리스트
9.4.4 아카이브 (Archive)
9.5 SQLite
9.5.1 데이터베이스 열기
9.5.2 쿼리 하기
9.5.3 데이터 변경하기
9.5.4 데이터베이스 닫기
9.6 코어 데이터
9.6.1 관리 객체 컨텍스트 생성하기
9.6.2 관리 객체 컨텍스트에 객체 가져오기
9.6.3 관리 객체 추가, 삭제
9.6.4 저장소에 기록하기
9.6.5 코어 데이터 정리
9.7 코어 로케이션
9.8 정리하기
10장. 네트워크 프로그래밍
10.1 푸시 통보 서비스 (Push Notification Service)
10.1.1 인증서 준비하기
10.1.2 OpenSSL
10.1.3 프로바이더 구현
10.1.4 메시지 구조
10.1.5 애플리케이션 구현
10.1.6 피드백
10.2 피어 투 피어 연결
10.2.1 예제 프로젝트 생성
10.2.2 델리게이트
10.3 음성 대화 추가하기
10.3.1 오디오 세션 설정하기
10.3.2 GKVoiceChatClient 프로토콜 구현
10.3.3 받은 데이터 알려주기
10.3.4 client 연결
10.3.5 대화 시작
10.4 정리
11장 설정 번들(Settings.bundle)
11.1 설정 애플리케이션이 설정 번들을 찾는 방법
11.2 예제 작성
11.3 설정 번들 파일 디자인하기
11.3.1 문자열 입력 추가하기
11.3.2 참, 거짓 스위치
11.3.3 다중 값 선택
11.3.4 슬라이더 추가하기
11.3.5 자식 항목 추가하기
11.4 새로운 파일을 설정 번들에 추가하기
11.5 지역화
11.6 애플리케이션에서 설정 값 접근하기
11.7 정리
12장 디버깅 가이드
12.1 Xcode로 디버깅하기
12.1.1 Xcode 화면 구조 설정하기
12.1.2 브레이크 포인트 설정하기
12.1.3 코드 실행하기
12.1.4 Objective-C 메서드에 브레이크 걸기
12.1.5 브레이크 포인트를 소리로 알려주기
12.1.6 브레이크 포인트에 동작 지정하기
12.2.7 와치 포인트 설정하기
12.2.8 메모리 덤프하기
12.2.9 디버깅 중이 아닌 애플리케이션의 NSLog 보기
12.3 인스투르먼츠(Instruments)
12.3.1 Leaks (메모리 누수 감지하기)
12.3.2 OpenGL ES 성능 확인
12.3.3 Activity Monitor
12.3.4 정리
12.4 Clang 정적 분석기
12.4.1 프로젝트 설정하기
12.4.2 설치하기
12.4.3 분석 진행
12.5 정리하기
13장 프로그래밍 기법과 팁
13.1 통보 (Notification)
13.1.1 통보 큐
13.2 프로퍼티와 접근자(Accessor)
13.2.1 synthesize 팁
13.2.2 프로퍼티 선언
13.2.3 메모리 해제
13.3 키-값 코딩 (Key-Value Coding)
13.3.1 예외 상황
13.4 키-값 감시 (Key-Value Observing)
13.4.1 수동으로 알리기
13.5 객체를 비교하는 방법
13.6 문자열 다루기
13.6.1 C 문자열로 초기화하기
13.6.2 문자열을 형식 문자로 구성하기
13.7 타이머 (NSTimer)
13.7.1 지정한 시간에 타이머 시작하기
13.8 스레드 기초
13.8.1 스레드 생성하기
13.8.2 스레드 메서드 구현하기
13.8.3 런 루프
13.8.4 스레드의 대안
13.9 메모리 관리
13.9.1 규칙1
13.9.2 규칙2
13.9.3 규칙3
13.9.4 규칙4
13.9.5 규칙5
13.9.6 규칙6
13.9.7 규칙7
13.10 빌드 시에 시뮬레이터와 실제 장치 구분하기
13.11 빌드 시에 SDK 버전 구분하기
13.12 무료 버전 타깃 구성하기
13.13 정리
15장 배포와 스토어 킷
15.1 개발을 위한 준비
15.1.1 개발 인증서 발급
15.1.2 개발 장비 등록
15.1.3 애플리케이션 ID (AppID) 만들기
15.1.4 프로비전 만들기 (Provisioning)
15.1.5 프로젝트 설정
15.2 배포 준비
15.2.1 배포 인증서
15.2.2 배포 프로비전
15.2.3 프로젝트 설정
15.2.4 AdHoc 프로젝트 설정
15.2.5 빌드 및 배포
15.2.6 Ad hoc 배포 사용하기
15.3 애플리케이션 내 판매 (In-App Purchase)
15.3.1 스토어 킷을 위한 사전 준비
15.3.2 스토어 킷의 클래스
15.3.3 상품 정보 얻기
15.3.4 구매하기
15.3.5 과거에 구매한 내역
15.4 정리
15.4.1 마치며
얼마 전까지만 해도 개발자 세상에서 아이폰 프로그래밍은 빠뜨릴 수 없는 이야깃거리였고, 조금 차분해지긴 했지만 여전히 많은 분들이 아이폰 프로그래밍에 관심을 가지고 계시리라 생각합니다. 특히, 지난 6월 애플에서 아이폰 SDK 3.0을 소개했을 때는, '바로 이거다!' 싶은 새롭고 재미있는 기능들이 여럿 소개되었는데요. 백그라운드 프로세스의 효과를 얻을 수 있는 '푸시 통보 서비스(push notification service)' 아이폰끼리 연결할..
이 책은 원래 iPhone 을 위한 Web programming 을 위해서 쓰여졌다. 서문에서 저자들도 아이폰이 2007년 처음 판매되었을때 애플 스토어 앞에 길게 늘어선 행렬에 있었다고 할 정도로 아이폰 과 애플의 제품들을 좋아하는 매니아라고 밝히고 있다.
이 책은 다른 아이폰 SDK 서적과는 확실히 다르다. 시작부터 아이폰을 위한 Web 프로그래밍에 대해서 책의 40% 가량을 할당해서 설명하고 있다. 대부분의 사람들이 아이폰SDK에 관심을 갖고 있는 상황에서 상당히 신선한 시도라는 생각이 든다. 분명 아이폰은 물론이고 모바일 기기에서의 인터넷은 데스크톱의 인터넷과 확실히 다르기 때문에 웹 개발자들에게는 상당한 도움이 될 것이다.
책을 쓰는 중에 아이폰SDK 가 발표되었고, 그에 따라서 아이폰SDK를 이용한 개발에 대한 내용을 추가한 것으로 생각된다. 어떤 챕터들로 이루어져 있는지 한번 보도록 하자.
*1부 : 아이폰 프로그래밍 소개
1장 : 아이폰에 대한 소개
2장 : 웹 프로그래밍과 SDK
- 웹 프로그래밍과 일반 아이폰 개발에 대한 논의 *2부 : 아이폰을 위한 웹페이지
3장 : 아이폰을 위한 웹페이지 만들기
- 아이폰 친화적인 페이지
- 웹페이지에서 멀티 터치를 처리하기
4장 : 웹킷과 텍스트 기반의 웹 어플리케이션
5장 : 아이폰을 위한 웹 어플리케이션 개발 (iUI)
6장 : 캔버스 이용하기
7장 : 대쉬코드
8장 : 아이폰 웹페이지 디버깅 하기
9장 : 웹 개발자를 우한 SDK 프로그래밍
- 메모리 관리, 오브젝트와 클래스 등의 기본 프로그래밍 개념 소개 *3부 : SDK기초
10장 : ObjC 와 아이폰 OS
11장 : Xcode 사용법
12장 : Interface builder 사용법
13장 : 뷰 컨트롤러
- UI 프로그래밍의 핵심이라고 할 수 있는 ViewController 를 소개하고, 대표적으로 tableview 를 소개한다.
14장 : 이벤트와 액션 처리
- 버튼과 터치등의 이벤트에 대한 소개
15장 : 고급 뷰 컨트럴러
- 탭바, 네비게이션 컨트럴러, 모덜 뷰 컨트럴러 소개 *4부 : SDK 프로그래밍
16장 : 액션, SQLite, 파일 접근, 주소록 API, Preference 소개
17장 : 가속도계와 위치정보
18장 : 미디어 : 이미지와 사운드
- 아이폰의 사진라이브러리에 접근하는 법, Core Graphic 예제, 미디어 플레이어 프레임 워크에 대한 소개
19장 : Quartz, Core Animation, OpenGL
20장 : 웹
- 웹View 와 기타 인터넷 프로토콜
- URL 조작, XML 파싱
2부는 웹 프로그래밍에 대한 내용이고, 3,4부가 우리가 관심있는 아이폰 SDK에 대한 내용이다. 아이폰에 대해서는 가장 기본적인 주제들을 다루고 있다. 물론 누락되는 내용도 상당히 많다. 10장에서는 ObjC와 아이폰OS에 대해서 간단히 소개하고,
11장,12장에서 가장 많이 쓰는 툴인 Xcode와 IB에 대해서 설명하고 있는데, 툴에 대해서 2개의 장을 할당할 정도로 프로그래밍 자체보다는 iPhoneSDK를 위한 준비과정과 기초과정에 신경을 썻다고 볼 수 있다. 아무래도 웹 개발자의 입장에서 접근하는 면이 이런 곳에서 보이는 것 같다. 그 다음으로 뷰를 기준으로 여러가지 뷰과 뷰 컨트럴러를 설명함으로 써 아이폰 어플리케이션을 개발하기 위한 UI를 만드는 방법을 설명한다. 그리고 거기에 수반되는 이벤트 처리에 대해서도 설명하고 있다.
그 외에 추가적인 요소로 Action,SQLite,주소록,Preference 그리고 가속도계와 위치정보를 이용하는 방법을 설명하고, 미디어 요소로써 동영상 플레이와 사운드 플레이에 대해서 설명하고 있다. 마지막 두챕터에서는 각각 OpenGL,Quartz의 그래픽 프로그래밍과 Web에 관련된 프로그래밍 스킬을 소개하고 있다. 하지만 19장에서 OpenGL에 대한 내용은 고작 반페이지가 전부이다. 그 내용은 인터넷에 있는 OpenGL ES문서를 보라는 것인데, 이 부분은 좀 미흡하다고 하겠다.
다른 책들과 약간 다른 목차를 가지고 있고, 접근 방식도 다르다고 생각된다. 책에서 코드를 설명하는 부분이 마음에 드는데, 대부분 하나하나 꼼꼼한 설명을 해 주는데, 이 부분은 저자가 상당히 신경을 많이 썼다고 생각된다.
아이폰 SDK에 대해서 전반적으로 무난하고 쉬운 내용을 담고 있다. 대신 웹개발자들에게 도움이 될 내용들은 많은 것 같다. 반대로 SDK개발에 있어서는 특별한 장점이 없는 책이다. 또한 SDK 개발에 필요한 많은 내용이 누락되어 있어서, 내용을 보강할 필요가 있을 것이다.
특징
1. 웹 개발자를 위한 내용을 유일하게 다루고 있다.
2. 아이폰 SDK 개발을 위해서 필요한 요소가 많이 누락되어 있다. (디버깅, 국제화이슈,네트워크,OpenGL, 등등등)
3. UI 관련된 내용에서 View 외의 control 에 대해서 설명이 부족하다.
4. 책의 40%가 Web 프로그래밍에 대한 내용이다.
5. 책에서 어떤 툴이나 프래임워크에 대해서 반복적으로 Anatomy 를 해서 설명한다고 하고 있지만, Overview에 가깝다.
6. 저자가 블로그를 운영하면서, iPhoneSDK 3.0은 물론이고, 추가적인 Article 들을 열심히 제공하고 있다.
1장 : 아이폰 SDK를 설치하고 환경을 구축하는 방법
- 프로비져닝에 대한 설명
- ObjectiveC 에 대한 소개
2장 : 인터페이스 빌더에 대한 소개
3장 : UI Kit 프레임워크
- 윈도우와 뷰
- 뱃지, 사파리, 전화 걸기
4장 : 이벤트 처리와 좌표계
- 멀티 터치
5장 : 레이어, 코어 그래픽과 Quartz 로 트랜스폼 하기
6장 : AVFoundation 과 Audio ToolBox 로 오디오관련 조작하기
- 플레이, 진동
7장 : 네트워크 프로그래밍
- 소켓 프로그래밍, HTTP,FTP 클래스 소개
8장 : 위치정보 이용하기(GPS)
9장 : 주소록 이용하기
10장 : UI킷의 고급 응용
- 기본 뷰를 제외한 모든 Control 에 대한 설명
- 가속도계
11장 : 어플리케이션 정보 저장하기
12장 : 커버 플로우
13장 : 페이지 전환
14장 : 동영상 재생
아쉽게도, 목차를 통해서도 상당히 정리되지 못한 느낌을 받게 된다. 하지만 전에 소개했던,
이 책에서 다루지 않는 부분들에 대해서 거의 모두 다루고 있다는 점에서 의미는 있다.
먼저 아이폰을 설치하고 인터페이스 빌더라는 툴을 다루는 1,2장은 거의 의미가 없는 챕터다.
3장에서 기본적인 윈도우와 뷰의 개념에 대해서 설명해 주고 있고, 전화를 거는 방법도 여기서 다루는데,
약간 정리가 안된 느낌이다.
5장의 레이어와 코어그래픽에 대한 설명은 너무 부실해서 애플이 공개하고 있는 리퍼런스 수준에도 미치지 못한다.
그외, 모든 내용이 애플의 리퍼런스에서 얻을 수 있는 정보에도 미치지 못할 정도로 급조된 느낌이 있다.
빠른 시점에 책을 내기 위해서 많은 변화들이 반영되지 못했기 때문에 초기 아이폰 SDK가 발표된 시점에
의미가 있던 기능들이 주로 소개되오 있다는 느낌이 든다.
좀 더 개선해야 할 점은, 각 장에 대해서 기본적인 동작원리및 철학에 대해서 설명해야 하고,
예제만 딸랑 소개하는 것에서 그치지 말고, 그 예제가 어떻게 동작되는지 자세히 설명할 필요가 있다.
또한 3장에서 전화걸기 기능에 대해서 소개하고, 10장에서 가속도계를 설명하는 등 목차 자체도 다시 정리되어야 할 것이다.
슬프게도 거의 얻을 수 있는 정보가 없는 책이었고, 설명하는 주제나 방식에 있어서 일반 개발서 라고 보기보다는 쿡북이라고 해야 더 옳을 것 같다.
개인적으로,
일반적인 아이폰 개발서라고 한다면, 크게 다음의 주제들은 다뤄줘야 한다고 생각된다.
0. Tools & Install
: 툴 설치와 환경 구축 방법
1. UI components
: 화면을 이루는 기본 구성요소인 뷰와 윈도우 그리고 컨트럴들에 대한 소개
: Maps framework (3.0)
2. Interfacing
: 사용자 인터페이스 방법 , 가속도 등의 모든 입력 수단
: Copy & Paste (3.0)
3. Graphics
: 게임 개발을 위한 요소인 그래픽, Quartz, OpenGL ES 4. Media access : iPod 의 미디어 라이브러리에 접근하는 방법, 플레이백 제어 방법 (3.0) 5. Network : 네트워크 프로그래밍, PeerToPeer 프레임워크 (3.0)
6. Phone resources (Camera...)
: 아이폰 고유의 자원들 : 폰, 메시징, 주소록, 이미지 라이브러리 등의 정보 7. AppStore & inApp purchase : AppStore 에 대한 내용과 InApp Purchase (3.0) 8. More applications : 아이팟 악세서리에 접근하기 위한 방법과 응용사례
A1. ObjectiveC A2. Debug issue
A3. How to use help documents
A4. Security issue
지금까지 두권의 책을 살펴본 결과, 디버깅 이슈, AppStore에 대한 소개, 네트워크 프로그래밍에 대한 소개가 아주 부족했거나, 아예 다뤄지지 않고 있다. 3.0에 새로 추가된 기능들이 어느정도 수준으로 보강될지 주목해 봐야 한다.
아이폰 관련 서적중에서 가장 평가가 좋은 책이다. 최초로 국내에도 소개된 iPhone SDK cookbook 시리즈가 팁 위주의 문제 해결을 위한 여러가지 주제들을 다룬다면, 이 책은 처음부터 하나하나 차근차근 배워나가는 전형적인 입문서이다.
총 18개의 장으로 이루어져 있고, 간단히 각 장이 다루고 있는 내용을 보면,
1장 : Welcome to the jungle
- 필요한 개발환경에 대한 소개.
- 아이폰 개발의 특수성에 대한 설명
2장 : Tiki Gods (Hello World) 를 만들기 위한 따라하기 예제
- 인터페이스 빌더에 대한 소개
- 컴파일과 실행 방법
3장 : 인터렉션 방법
- 사용자의 입력을 받기 위한 방법.
- 아웃렛과 뷰 컨트럴러에 대한 소개
- 어플리케이션 딜리게이트
- 간단한 예제를 통한 따라하기 실습
4장 : 좀더 재밌는 인터페이스
- 그림 이미지 사용하기
- 키보드 사라지게 하는 팁
- 슬라이더와 레벨 컨트럴에 대한 설명
- 스위치와 세그먼트 컨트럴
- 버튼, 엑션 시트, 경고 창
- 버튼 다듬기
5장 : 로테이션과 사이즈 조절
- 회전에 대한 반응 방법
- 뷰 스왑시키기
6장 : 다중 뷰 구조
7장 : 탭바와 픽커 컨트럴
8장 : 테이블 뷰 컨트럴
9장 : 테이블뷰와 네비게이션
10장 : 어플리케이션 환경설정 방법
- User defaults
11장 : 데이터 저장방법
- 샌드박스 개념
- 시리얼라이져블 Object 들
- 파일 저장을 위한 전략
- Embedded SQLite3
12장 : 그리기 와 OpenGL
- Quartz2D와 OpenGL ES 예제 어플리케이션 위주의 설명
13장 : 터치와 손동작
- 멀티터치, 닦아냄 동작 등
- 커스텀 동작
14장 : 위치정보(GPS) 이용
15장 : 가속도계 이용법
- 흔들기 감지
- 흔들기 예제 -> 화면 깨짐 (이 책에서 가장 재미있는 예제임)
16장 : 카메라 이용하기
- 카메라와 포토라이브러리 접근
17장 : 지역화 이슈
18장 : 추가 정보로 마무리
전체적으로 거의 모든 중요한 내용들은 커버하고 있다. 하지만 목차를 통해서도 느낄 수 있듯이,
모든 내용을 애플의 iPhone SDK 문서를 잘 정리해서 만들었다는 느낌이 든다. 중요한 특징 및 단점은
1. 아이폰 AppStore에 대한 등록절차나 경향에 대한 내용이 전혀 다뤄지지 않고 있다는 점
2. 대부분의 예제가 기초적인 수준에 머물러 있다는 점
3. 초보자를 주 타깃으로 하고 있다는 점
4. ObjectiveC에 대한 설명은 없다는 것
5. 그래픽 분야에 대한 설명이 상대적으로 빈약하며, 주로 어플리케이션의 구조인 UI 컨트럴에 초점을 두고 있음.
6. 아이폰 SDK 3.0에 대한 내용을 포함하지 않음. (개선될 것으로 예상?)
7. 아이폰의 다른 자원들 (전화!!!, SMS, Contacts ) 등에 대한 설명은 전혀 없음.
8. 동영상과 사운드는 거의 다루지 않음.
9. 디버깅 기법에 대해서 거의 다루지 않음.
10. 보안이슈 누락
12. 네트워크 프로그래밍에 대해서 전혀 다루지 않음.
13. 원서의 경우는 평균적인 엔지니어링 서적에서는 많이 쓰이지 않는 고급 단어들이 많이 사용된다.
14. NSArray 등의 자료구조의 이용은 기존의 C/C++ 개발자에게는 가장 어색한 부분이다. 이 부분에 대한 설명이 없다.
이 책은 현재 나와 있는 아이폰 관련 책 중에서 가장 잘 쓰여진 책이지만, 아쉬운 부분이 몇가지 있다.
개선될 수 있는 여지라면, 위의 10가지 항목에 대한 고려가 필요하다고 생각된다.
이 글에서는 단점을 주로 지적했지만, 초보자를 위한 입문서로는 정말 알차고 도움이 될 만한 내용을 많이 담고 있다.
특히 일반 UI 컴포넌트를 주로사용하는 일반 어플리케이션 개발을 위해서는 최적의 입문서임은 확실하다.