이미 소장하고 있다면 판매해 보세요.
|
1장 iOS SDK 소개
___iOS 개발자 프로그램 ______온라인 개발자 프로그램 ______표준 개발자 프로그램 ______기업용 개발자 프로그램 ______대학 개발자 프로그램 ______개발자 등록 ___앱 개발 시작 ______SDK 다운로드 ______개발 기기 ______시뮬레이터의 제약 사항 ______개발을 위한 기기 연결 ___모델별 차이 ______화면 크기 ______카메라 ______오디오 ______통화 기능 ______코어 로케이션과 코어 모션 ______진동 지원과 근접 센서 ______프로세서의 속도 ______OpenGL ES ___플랫폼의 제약 사항 ______저장 공간의 한계 ______데이터 접근의 한계 ______메모리의 한계 ______상호작용의 한계 ______배터리의 한계 ______애플리케이션의 한계 ______사용자 행동에 따른 제약 ___SDK의 제약 사항 ___프로비저닝 포털 ______팀 구성 ______인증서 요청 ______기기 등록 ______애플리케이션 식별자 등록 ______프로비저닝 ___아이폰 프로젝트 구성 ______아이폰 애플리케이션의 기본 골격 ______main.m ______애플리케이션 델리게이트 ______뷰 컨트롤러 ______이 책의 예제 코드 이용 안내 ___iOS 애플리케이션의 구성 요소 ______애플리케이션 폴더의 계층 구조 ______실행 파일 ______Info.plist 파일 ______아이콘과 기본 이미지 ______인터페이스 빌더 파일 ______애플리케이션 번들에 없는 파일 ______IPA 아카이브 ______샌드박스 ___프로그램 패러다임 ______객체지향 프로그래밍 ______모델-뷰-커트롤러 ___정리 2장 오브젝티브C 사관학교 ___오브젝티브C 프로그래밍 언어 ___클래스와 객체 ______객체 생성 ______메모리 할당 ______메모리 해제 ______MRR하에서의 리테인 카운트 ___메소드, 메시지, 셀렉터 ______선언되지 않은 메소드 ______객체를 가리키는 방법 ______메소드 상속 ______메소드 선언 ______메소드 구현 ______클래스 메소드 ______빠른 열거 ___클래스 계층 ___로그 출력 ___기본적인 메모리 관리 ______MRR을 이용한 메모리 관리 ______ARC에서 메모리 관리 ___프로퍼티 ______캡슐화 ______점 표기법 ______프로퍼티와 메모리 관리 ______프로퍼티 생성 ______커스텀 게터와 세터 생성 ______프로퍼티 수식자 ______키-값 코딩 ______키-값 관찰 ______MRR과 높은 리테인 카운트 ______객체를 생성하는 다른 방법 ______객체의 반환 ___블록 사용 ______코드에 블록 정의 ______블록 참조 할당 ______블록과 지역 변수 ______블록과 typedef ______블록과 MRR에서의 메모리 관리 ______블록의 다른 용도 ___자동화된 메모리 관리 기법 ______프로퍼티와 변수 수식자 ______참조 사이클 ______오토릴리즈 풀 ___ARC 코드 작성의 필요성 ______ARC로의 변환 ______타겟별로 ARC 변환 기능 적용 ______파일별로 ARC 변환 기능 적용 ______엑스코드 템플릿으로 ARC를 배제한 프로젝트 만들기 ___ARC 규칙 ___코어 파운데이션과 톨 프리 브리징에서 ARC 사용 ______오브젝티브C와 코어 파운데이션 간의 변환 ______브리징 방식의 선택 ______브리징에서 런타임의 작동 방식 ______ARC 컴파일 환경을 위한 조언 ___싱글턴 생성 ___카테고리(클래스의 확장) ___프로토콜 ______프로토콜 정의 ______프로토콜 사용 ______콜백 추가 ______선택적인 콜백 선언 ______선택적인 콜백 구현 ______프로토콜 준수 ___파운데이션 클래스 ______문자열 ______숫자와 날짜 ______컬렉션 ___한 가지 더: 메시지 포워딩 ______메시지 포워딩 구현 ______마무리 작업 ______간단한 포워딩 ___정리 3장 첫 번째 iOS 프로젝트 ___새 프로젝트 생성 ___템플릿을 이용한 Hello World 작성 ______새 프로젝트 생성 ______엑스코드 작업 공간 소개 ______프로젝트 리뷰 ______아이폰 스토리보드 열기 ______뷰의 편집 ______애플리케이션 실행 ___시뮬레이터 사용 ___시뮬레이터의 구현 방식 ___시뮬레이터 애플리케이션의 공유 ___가장 간단하게 만드는 Hello World ______SDK API 불러오기 ___인터페이스 빌더 파일을 오브젝티브C 코드로 변환 ___디버거 사용 ______중단점 설정 ______디버거 창 열기 ______라벨 검사 ______또 다른 중단점 설정 ______백 트레이스 ______콘솔 ______간단한 디버그 트레이스 추가 ___메모리 관리 ___예제: 누수 감지를 위한 인스트루먼트 사용 ___예제: 임시로 할당된 객체를 관찰하기 위한 인스트루먼트 사용 ______메모리 부족 상황의 재현 ___코드 분석 ______엑스코드에서 기기로: 오거나이저의 인터페이스 ______디바이스 ______요약 ______프로비저닝 쇇로파일 ______디바이스 로그 ______애플리케이션 ______콘솔 ______스크린샷 ___iOS 기기를 위한 개발 ______개발 프로비전 사용 ______프로비저닝 포털에 기기 추가 ______애플리케이션 식별자 검사 ______기기와 코드 서명 신분 설정 ______기본 SDK와 배포 SDK 타겟 설정 ______Hello World 애플리케이션의 컴파일과 실행 ______컴파일된 애플리케이션에 대한 서명 ___컴파일 시간 체크를 이용한 시뮬레이터 빌드 감지 ___런타임 호환성 체크 ___프래그마 마크 ______메소드 축약 표시 ___배포 준비 ______빌드 위치 결정과 정돈 ______스킴과 액션 사용 ______빌드 환경설정 추가 ______애드 혹 배포 ______애드 혹 패키지 작성 ___무선 애드 혹 배포 ______매니페스트 작성 ___앱스토어에 제출 ___정리 4장 인터페이스 디자인 ___UIView와 UIWindow ______데이터를 표시하기 위한 뷰 ______선택을 위한 뷰 ______컨트롤 ______테이블과 피커 ______바 ______프로그레스와 액티비티 ___뷰 컨트롤러 ______UIViewController ______UINavigationController ______UITabBarController ______스플릿 뷰 컨트롤러 ______페이지 뷰 컨트롤러 ______팝오버 컨트롤러 ______테이블 컨트롤러 ______주소록 컨트롤러 ______이미지 피커 ______메일 작성 컨트롤러 ______문서 상호작용 컨트롤러 ______게임킷 피어 피커 ______미디어 플레이어 컨트롤러 ___뷰 디자인의 구조 ______상태 바 ______내비게이션 바, 툴바, 탭 바 ______키보드와 피커 ______텍스트 필드 ______UIScreen 클래스 ___인터페이스 작성 ___살펴보기: 스토리보드 인터페이스 작성 ______새 프로젝트 생성 ______뷰 컨트롤러 추가 ______뷰 위치 조정 ______클래스 갱신 ______장면에 이름 붙이기 ______뷰 속성 편집 ______내비게이션 버튼 추가 ______또 다른 내비게이션 컨트롤러 추가 ______컨트롤러 이름 붙이기 ______내비게이션 바 꾸미기 ______버튼 추가 ______진입점 변경 ______해제 코드 추가 ______앱 실행 ___팝오버 구현 살펴보기 ______내비게이션 컨트롤러 추가 ______뷰 컨트롤러 클래스 변경 ______팝오버 뷰 수정 ______장면 연결 ______코드 편집 ___살펴보기: IB로 iOS 기반의 온도 변환기 작성 ______새 프로젝트 생성 ______미디어 추가 ______인터페이스 빌더 ______라벨과 뷰 추가 ______기기 회전 지원 ______인터페이스 테스트 ______아웃렛과 액션 추가 ______Conversion 메소드 추가 ______키보드 타입 업데이트 ______아이패드 인터페이스 연결 ___살펴보기: 코드로 온도 변환기 인터페이스 구현 ______프로젝트 코드 조립 ___살펴보기: 하이브리드 방식으로 인터페이스 생성과 활용 ______새 XIB 인터페이스 파일 생성 ______뷰 추가와 내용 추가 ______뷰에 태그 달기 ______코드 편집 ___기기 회전을 고려한 디자인 ___기기 회전 가능 설정 ___자동 크기 변환 ______자동 크기 조절 사례 ______자동 크기 조절 옵션 분석 ___뷰 이동 ___예제: 템플릿을 활용한 뷰 이동 ___한 가지 더: 인터페이스 빌더에 대한 몇 가지 팁 ___정리 5장 뷰 컨트롤러 ___내비게이션 컨트롤러와 스플릿 뷰를 이용한 개발 ______내비게이션 컨트롤러와 스택의 사용 ______뷰 컨트롤러를 스택에 넣고 꺼내기 ______내비게이션 아이템 클래스 ______모달 프레젠테이션 ___예제: 두 개의 아이템이 있는 간단한 메뉴 생성 ___예제: 세그먼트 컨트롤러 추가 ___예제: 뷰 컨트롤러 간의 내비게이션 ___예제: 화면에 커스텀 모달 뷰 나타내기 ___예제: 페이지 뷰 컨트롤러 ______북 프로퍼티 ______구현 아이템을 하나로 묶기 ___예제 살펴보기 ___예제: 페이지 뷰 컨트롤러에 페이지 이동 기능 추가 ___예제: 탭 바 ___예제: 탭 상태 유지 ___예제: 스플릿 뷰 컨트롤러 만들기 ___예제: 아이폰, 아이패드 통합 스플릿 뷰/내비게이션 앱 만들기 ___예제: 커스텀 컨테이너와 세그웨이 ______뷰 컨트롤러 간의 장면 전환 ___한 가지 더: 인터페이스 빌더와 탭 바 컨트롤러 ___정리 6장 뷰와 애니메이션 ___뷰의 계층 ___예제: 뷰 계층 트리 확인 ___예제: 서브뷰 조회 ___서브뷰 관리 ______서브뷰 추가 ______서브뷰의 순서 변경과 삭제 ______뷰 콜백 ___예제: 뷰에 태그를 추가하고 이를 통해 뷰 가져오기 ______태그 값을 이용한 뷰 검색 ___예제: 뷰에 이름 붙이기 ______연관 객체 ______태그 이름 딕셔너리 사용 ___뷰 지오메트리 ______프레임 ______변환 ______체계 ___예제: 뷰 프레임의 활용 ______크기 조정 ______CGRect와 뷰의 중앙 ______기타 유틸리티 메소드 ___예제: 경계 영역 내에서 뷰를 임의의 위치로 이동 ___예제: 뷰 변환 ___디스플레이와 상호작용 속성 ___UIView 애니메이션 ______UIView 애니메이션 만들기 ______블록을 이용해 애니메이션 만들기 ______조건에 따라 작동하는 애니메이션 ___예제: 뷰를 서서히 드러내고 감추기 ___예제: 뷰 교환 ___예제: 뷰 뒤집기 ___예제: 코어 애니메이션 전환 효과의 사용 ___예제: 뷰에 반동 효과 부여 ___예제: 이미지 뷰 애니메이션 ___한 가지 더: 뷰에 반사 효과 추가 ___정리 7장 이미지 작업 ___이미지를 찾고 불러오기 ______이미지 데이터 읽기 ___예제: iOS 사진 앨범에서 사진 가져오기 ______이미지 피커로 작업 ______이미지 편집 정보 복원 ___예제: Asset URL에서 이미지 가져오기 ___예제: 사진 촬영 후 사진 앨범에 저장 ______카메라 선택 ___Documents 폴더에 사진 저장 ___예제: 사진을 이메일로 전송 ______이메일 메시지 내용 작성 ______이메일 작성 컨트롤러 나타내기 ___카메라 촬영 자동화 ___커스텀 카메라 오버레이 사용 ___예제: AVFoundation 카메라 사용 ______카메라 기능 요청 ______카메라 조회하고 가져오기 ______카메라 세션 생성 ______촬영 카메라 교체 ______카메라 미리 보기 ______카메라 미리 보기 배치 ______EXIF ______이미지 지오메트리 ______카메라 도우미 생성 ___예제: 코어 이미지 필터 추가 ___예제: 코어 이미지의 얼굴 인식 기능 구현 ___얼굴 이미지 추출 ___비트맵 이미지 처리 ______비트맵 컨텍스트로 이미지 생성 ______이미지 처리 적용 ______이미지 처리 실무 ___예제: 실시간 동영상에서 샘플링 ______HSB로 전환 ___예제: 썸네일 이미지 만들기 ___뷰 기반의 스크린샷 기록 ___PDF 파일에 그림 그리기 ___빈 화면에서 새로운 이미지 생성 ___예제: 스크롤 뷰에 이미지 표시 ______여러 개의 이미지가 있는 페이지 스크롤 뷰 생성 ___정리 8장 제스처와 터치 인터페이스 ___터치 ______터치 인터페이스 생명주기 ______터치와 반응자 메소드 ______뷰 터치 ______멀티터치 ______제스처 인식 ___예제: 간단한 직접 조작 인터페이스 ___예제: 팬 제스처 인식 ___예제: 한 번에 여러 제스처 인식 ___제스처 충돌 ___예제: 이동 범위의 제한 ___예제: 터치 테스트 ___예제: 비트맵에서의 테스트 ___예제: 지속성 있는 터치 처리 인터페이스 ______상태 저장 ______상태 복원 ___예제: 아카이브를 통한 지속성 부여 ___예제: 되돌리기 기능 추가 ______Undo 매니저 ______서브뷰의 Undo 기능 추가 ______내비게이션 바에서의 처리 ______Undo 등록 ______흔들기 동작을 통한 Undo 기능 추가 ______Undo와 Redo의 동작 이름 추가(옵션) ______흔들어서 편집하기 기능 지원 ______최초 반응자 역할 부여 ___예제: 화면에 터치 흔적 그리기 ___예제: 그림을 부드럽게 만들기 ___예제: 원 감지 ______사용자 제스처 인식기 만들기 ___예제: 멀티터치 ___터치 궤적 유지 ___한 가지 더: 스크롤 뷰의 드래그 ___정리 9장 컨트롤 생성과 사용 ___UIControl 클래스 ______컨트롤의 종류 ______컨트롤 이벤트 ___버튼 ___인터페이스 빌더에서 버튼 추가 ______이미지 ______버튼에 액션 연결 ______버튼이 아닌 버튼 ___엑스코드에서 커스텀 버튼 만들기 ___여러 줄의 버튼 텍스트 ___버튼에 애니메이션 요소 추가 ___예제: 버튼 반응 애니메이션 ___예제: 커스텀 핸들이 있는 슬라이더 ______UISlider 커스터마이징 ______효율성 추가 ______외양을 위한 장치 ___예제: 두 번 탭할 수 있는 세그먼트 컨트롤 만들기 ___예제: UIControl의 하위 클래스 생성 ______UIControl 생성 ______터치 동작 추적 ______타겟에 이벤트 전달 ___스위치와 스테퍼로 작업 ___예제: 별점 슬라이더 만들기 ___예제: 터치 휠 만들기 ___페이지 표시 컨트롤 추가 ___예제: 페이지 스크롤러 만들기 ___툴바 만들기 ______코드를 통한 툴바 생성 ______iOS 5의 툴바를 위한 팁 ___정리 10장 텍스트 작업 ___예제: UITextField 키보드 해제 ______텍스트 속성 프로퍼티 ______다른 텍스트 필드 프로퍼티 ___예제: 키보드에 따른 뷰 크기 조절 ___예제: 커스텀 액세서리 뷰를 이용한 텍스트 뷰 해제 ___예제: 하드웨어 키보드를 이용한 뷰 크기 조정 ___예제: 커스텀 입력 뷰 만들기 ___예제: 텍스트 입력 인식 뷰 만들기 ___예제: 텍스트 뷰가 아닌 뷰에 커스텀 입력 뷰 추가 ______입력 클릭 추가 ___예제: 좀 더 좋은 텍스트 에디터 제작 ___예제: 입력된 텍스트 필터링 ___예제: 텍스트 패턴 검출 ______나만의 정규표현식 생성 ______정규표현식으로 표현 ______데이터 검출 ______내장된 데이터 타입 검출 기능 추가 ___예제: UITextView에서 철자 오류 검출 ______텍스트 문자열 검색 ___예제: 텍스트에 폰트 스타일 적용 ___예제: 앱에 커스텀 폰트 추가 ___예제: 코어 텍스트와 속성이 부여된 문자열 ___의사 HTML로 속성 텍스트 생성 ___예제: 코어 텍스트를 페이지로 나누기 ___예제: PDF 파일에 코어 텍스트 저장 ___예제: 사각형이 아닌 도형에 코어 텍스트 나타내기 예제: 경로 위에 텍스트 나타내기 ______베지어 경로 위에 텍스트 나타내기 ______비율에 맞춰 텍스트 나타내기 ______그림 문자 나타내기 ___한 가지 더: 커다란 폰 텍스트 ___정리 11장 테이블 뷰 생성과 관리 ___UITableView와 UITableViewController 소개 ______테이블 생성 ___예제: 기본 테이블 구현 ______테이블 구성 ______데이터 소스 메소드 ______셀 재사용 ______사용자 터치에 대한 반응 ______선택한 셀의 색상 지정 ______테이블의 배경색 변경 ______셀 타입 ___예제: 인터페이스 빌더로 커스텀 셀 작성 ______커스텀 선택 속성 추가 ______줄무늬 셀 배경 ______셀 선택 시 하이라이트 기능 없애기 ______그룹 테이블 생성 ___예제: 커스텀 셀에서 컨트롤 상태 기억 ______셀의 재사용 시각화 ______체크 표시된 테이블 셀 생성 ______상세 보기 액세서리로 작업 ___예제: 테이블 편집 ______제거 컨트롤 표시 ______제거 컨트롤 해제 ______삭제 요청의 처리 ______Undo 지원 ______셀 스와이프 ______셀 추가 ______셀 순서 변경 ______알고리즘에 따른 테이블 정렬 ___예제: 섹션 활용 ______섹션 만들기 ______섹션과 열의 숫자 세기 ______셀 반환 ______헤더 제목 생성 ______섹션 인덱스 생성 ______섹션과 델리게이션 ___예제: 테이블에서 데이터 검색 ______검색 디스플레이 컨트롤러 생성 ______검색 가능한 데이터 소스 메소드 작성 ______델리게이트 메소드 ______검색 인덱스 사용 ______헤더와 푸터 커스터마이징 ___예제: 테이블에 '끌어서 새로 고침' 기능 추가 ___커스텀 그룹 테이블의 코드 작성 ______그룹화된 환경설정 테이블 생성 ___예제: 멀티 휠 테이블 만들기 ______UIPickerView 생성 ___예제: 뷰 기반의 피커 사용 ___예제: UIDatePicker 사용 ___날짜 피커 생성 ___한 가지 더: 날짜 형식 ___정리 12장 코어 데이터 맛보기 ___코어 데이터 소개 ______모델 파일 생성과 편집 ______클래스 파일 만들기 ______코어 데이터 컨텍스트 생성 ______객체 추가 ______데이터베이스 조회 ______데이터 변경 감지 ______객체 제거 ___예제: 테이블 데이터 소스를 위한 코어 데이터 사용 ___예제: 테이블 검색과 코어 데이터 ___예제: 실시간 데이터 편집과 코어 데이터 테이블 뷰 연동 ___예제: 코어 데이터에서 Undo/Redo 기능 구현 ___정리 13장 사용자 알림 ___알림을 통해 사용자에게 직접 알리기 ______간단한 알림 생성 ______알림 델리게이트 ______알림을 화면에 표시 ______알림의 종류 ___사용자에게 진행 상황 보여주기 ______UIActivityIndicatorView 사용 ______UIProgressView 사용 ___예제: 버튼 없는 알림 창 ______떠있는 진행 상황 모니터 생성 ___예제: 실행 루프를 활용한 모달 알림 생성 ___예제: 알림 뷰를 활용한 가변 인수 사용 ______간단한 메뉴 표시 ______메뉴 스크롤 ______액션 시트에 텍스트 표시 ___예제: 커스텀 알림 오버레이 생성 ______탭 가능한 오버레이 ___예제: 기본 팝오버 ___예제: 로컬 알림 ___알림 표시기 ______애플리케이션 배지 ___예제: 간단한 오디오 알림 ______시스템 사운드 ______진동 ______알림 ______지연 ___한 가지 더: 볼륨 조절 알림 창 ___정리 14장 하드웨어 장치 활용 ___기본적인 기기 정보 알아보기 ___기기 기능 제한 설정 ___예제: 기기 상세 정보 확인 ___아이폰 배터리 상태 확인 ___근접 센서 활성화/비활성화 ___예제: 가속도계를 이용해 항상 위를 가리키게 하기 ______동기적으로 실시간 가속도계 각도 데이터 가져오기 ______기기 회전에 따른 연관 각도 계산 ______기기의 기본 방향 ___예제: 가속도계를 이용한 화면 위의 객체 이동 ______나비 애니메이션에 반짝임 요소 추가 ___예제: 코어 모션 기초 ______코어 모션의 센서 테스트 ______코어 모션의 핸들러 블록 ___예제: 기기 상태 정보 획득과 사용 ___모션 이벤트로 기기 흔들기 동작 감지 ___예제: 가속도계로 기기 흔들기 동작 감지 ___예제: 외부 화면 사용 ______화면 감지 ______화면 해상도 정보 가져오기 ______비디오 출력 설정 ______디스플레이 링크 추가 ______손실된 화소 보정 ______VIDEOkit ___한 가지 더: 가용 디스크 공간 확인 ___정리 15장 네트워킹 ___네트워크 상태 점검 ___예제: 연결 확인을 위한 UIDevice 클래스 확장 ___연결 변화 조회 ___IP와 호스트 정보 확인 ___블록 호출에서 큐 사용 ___사이트 상태 확인 ___동기식 다운로드 ___이론적인 비동기식 다운로드 ___예제: 비동기식 다운로드 ___본인 인증 요청에 대한 처리 ______본인 확인 정보의 저장 ___예제: 키체인 정보의 저장과 인출 ___예제: 데이터 업로드 ______NSOperationQueue ___트위터 ___예제: XML 데이터를 트리 구조로 변환 ______트리 구조 ______XMLParser를 이용한 트리 구조 생성 ______TreeNode를 이용한 트리 구조 사용 ___예제: 간단한 웹 기반 서버 만들기 ___한 가지 더: JSON 직렬화 활용 ___정리 |
|
이 책이 바로 여러분이 기다리던 iOS 개발 바이블이다!
지난 해 iOS 4가 처음으로 등장했을 때 담당 편집자와 나는 어려운 결정을 내렸다. iOS 4에 대한 책을 출간하되 애플이 엑스코드 4를 출시하기 전까지는 이에 대한 내용은 포함시키지 않는다는 결정이었다. 우린 결국 엑스코드 4를 반영하지 않았는데, 드디어 여러분이 보고 싶어 하던 그 내용이 바로 이 책에 실리게 된 것이다. 하지만 우리가 예상치 못한 일이 생겼는데, 애플의 NDA(비공개협약)가 2011년 봄까지 지속될 것이고, iOS 5 역시 이 무렵 공개된다는 것이었다. NDA와 iOS 출시 일정 때문에 고민하던 중 우린 결국 iOS 4.3 버전으로 책을 개편하고 전자책으로만 출간하기로 결정했다. iOS 4.3을 전자책으로라도 출간한 이유는 이에 관한 정보를 알고 싶어 하는 개발자가 여전히 존재했기 때문이다. 개편이 끝났을 때 WWDC에서 iOS 5가 공개됐고, 나는 서둘러서 iOS 5를 반영한 개정증보판 작업에 착수했다. 지금 보고 있는 이 책이 바로 그 iOS 5 개정판이다. 이 책 『The iOS 5 Developer's Cookbook』은 'iOS 프로그래머가 꼭 알아야 할 핵심 개념과 실용 예제'라는 원서의 부제목을 통해 이 책의 목적을 소개한다. 이 책이 iOS 5 프로그램 개발을 시작하는 사람이 알아야 할 내용을 담고 있다는 의미다. iOS 개발자로서 첫발을 내딛는 사람에게 이 책은 이상적인 선택이 될 수 있는데, 이 책에선 도구(엑스코드와 인터페이스 빌더)와 언어(오브젝티브C), 그리고 iOS 앱을 만들기 위한 모든 기본 요소(테이블 뷰, 커스텀 컨트롤, 스플릿 뷰 등)를 다루기 때문이다. 하지만 우린 거기에 만족할 수 없었다. 2011년 10월 중순은 2011년도 책 출간의 마지막 마감일이었다. 책은 이미 인쇄 중이었지만, 나는 『The iOS 5 Developer's Cookbook』에 대한 좀 더 향상된 내용을 계속 쓰면서 덧붙이는 중이었고, 결국 일부 새로운 장은 인쇄되지 못했다. 이에 이 모든 내용을 엮어 전자책 버전(아이북스(iBooks)의 이펍(ePub), 킨들(Kindle), 그리고 데스크톱용 PDF 버전)으로만 『The iOS 5 Developer's Cookbook: Expanded Electronic Edition』을 출간하기로 했다. 전자책 증보판에는 지금 이 책에 실린 수백 페이지와 동일한 내용이 실렸다. 인쇄판의 전자책 버전을 이미 구입한 독자를 위해서는 추가된 부분만을 따로 모아 『The iOS 5 Developer's Cookbook: The Additional Recipes』로 출간했다. 전자책 증보판과 함께 추가 예제 역시 이펍, 킨들, 그리고 PDF 형태로 볼 수 있다. 예제 코드는 이전과 마찬가지로 깃허브(github)에 올려뒀다. 이 책의 예제 코드는 https://github.com/erica/iOS-5-Cookbook에 있고, WWDC 2011 이후의 내용과 애플이 iOS 5 베타 버전을 개발자에게 배포하던 시기의 자료가 모두 수록돼 있다. 앞으로 출간될 책에 대한 제안, 기존 책의 오류 수정, 오타 정정 요청 등 그 어떤 내용이든 erica@ericasadun.com로 알려주면 정말 감사하겠다. 여러분의 모든 의견은 좀 더 나은 책을 만드는 데 큰 힘이 된다. ---저자 서문 중에서 지난 2년간 모바일 플랫폼 산업의 선두에 서기 위해 구글과 한 치의 양보도 없는 치열한 다툼을 벌였던 애플에게 있어 iOS 5는 스티브 잡스의 유작 이상의 의미가 있다. 2007년 데뷔 이래 폭풍 성장을 거듭해 온 청년기의 플랫폼이 이제는 자신의 부족함을 발견하고, 이를 채워나가며 다른 플랫폼의 모습, 장단점, 철학을 이해하고 스스로의 성장의 밑거름으로 받아들이게 된 것이다. 모바일 기술의 안정기, 시장의 성숙기에 대한 애플의 대답이라고 할 수 있는 iOS 5는 애플리케이션 개발에서 로직과 디자인을 분업해 관리할 수 있는 스토리보드 같은 체계를 제공하고, 개발자 커뮤니티의 목소리를 반영해 그간 다른 플랫폼에는 존재하지만 iOS에는 없었던 주요 기술과 UI 요소를 iOS의 문맥에 맞게 구현할 수 있는 방법을 추가했다. iOS 개발서 분야의 대표적인 작가이자 개발자로 명성 높은 에리카 세든이 전작의 성공에 힘입어 새롭게 펴낸 이 책은 iOS가 기품 있는 성숙 단계에 이른 것처럼 다양한 예제 코드를 볼 수 있는 개발 예제 서적에서 iOS에 대한 통합적인 시각을 갖춘 개발자 라이브러리로 진화했다. 넥스트스텝(1987년) 이전부터 애플과 스티브 잡스의 팬이었던 에리카의 원숙미가 더해진 개발 지식과 경험, 그리고 그와 뜻을 같이 하는 개발자 커뮤니티의 혜안이 이번 3판에 그대로 녹아들었다. 전작의 장점을 살려 절차지향과 객체지향을 넘나들며, 가끔은 두 방법 모두를 사용해 좀 더 효율적이고 효과적이며, iOS에 능숙하지 않은 개발자도 이해하기 쉬운 예제로 구성됐다. 한국에 소개된 에리카의 iOS 관련 전작을 모두 읽어본 입장에서 이번 3판을 번역하며 에리카의 열정에 새삼 감탄한 점은 수백 개에 이르는 기존 코드 예제 대부분이 2판 이후에 소개된 iOS 5, 엑스코드 4.2, 오브젝티브C 2.0, ARC의 내용을 반영해서 수정 보완되고 이에 대한 주석이 빈틈없이 추가됐다는 사실이다. 또한 기존 예제 코드도 새로운 앱스토어의 트렌드와 문맥을 반영해 개선되거나 아예 새로운 코드로 대체되기도 했다. 이런 점에서 기존 판과 비슷한 제목을 지닌 에리카의 iOS 개발서지만 내용은 전작과 완전히 달라졌다고 해도 과언이 아니다. - 동준상 ---옮긴이의 말 중에서 |
|
- 최신 iOS 5 SDK, 엑스코드 4.2, 오브젝티브C 2.0를 기반으로 설명하는 아이폰 프로그래밍 완벽 가이드
- 아이폰/아이패드 프로그래머가 꼭 알아야 할 핵심 개념과 주요 예제로 가득한 iOS 개발 바이블 베스트셀러 저자이자 iOS 개발의 구루인 에리카 세든이 아이폰, 아이패드, 아이팟 터치용 iOS 앱 개발에 필요한 모든 정보를 이 책 속에 담았다. 세든은 새롭게 추가된 강력한 기능의 iOS 5와 최신 버전의 오브젝티브C, 엑스코드 4 개발 도구에 초점을 맞춰 이 책을 재구성했다. 『The iOS 5 Developer's Cookbook 한국어판』은 개발자가 가장 자주 마주치게 되는 iOS 5에 대한 개발 문제를 미리 만들어진 코드로 제공하므로, 시행착오 없이 초보 개발자라도 신뢰할 수 있는 앱을 만들 수 있게 해준다. 세든은 견고한 코드를 통해 각 주제에 대한 새로운 개념과 기술을 소개하며, 개발자는 이 코드를 쉽게 재사용하거나 확장할 수 있다. 세든은 iOS 5 개발을 위한 각 주제에 대해 항상 '어떤 방식으로', '왜 그래야만 하는지'를 설명하므로, 단순히 예제 코드 나열만으로 구성된 기술서와는 다르다. 세든의 검증된 예제는 사용자 인터페이스 디자인에서부터 뷰 컨트롤러, 제스처와 터치, 네트워크와 보안에 이르기까지 iOS 개발에 대한 모든 주요 주제를 다룬다. 각 장은 관련성 높은 주제만을 엄선해 모아뒀으므로, 어떤 클래스나 어떤 프레임워크를 선택해야 할지 고민할 필요 없이 각자가 필요한 개발 전략에만 집중할 수 있다. ★ 이 책에서 다루는 내용 ★ ■ iOS 5 SDK 주요 개념, 오브젝티브C 핵심 정리, iOS 개발 주기 ■ 인터페이스 빌더와 오브젝티브C를 이용한 인터페이스 디자인과 커스터마이징 ■ 최신 페이지 뷰 컨트롤러와 커스텀 컨테이너를 활용한 뷰 컨트롤러, 뷰, 애니메이션 기법 ■ 커스텀 제스처 인식기를 포함해 터치와 제스처 활용 기법 ■ 컨트롤 요소를 기초적인 부분부터 직접 만들고 활용하는 방법 ■ 코어 이미지와 코어 텍스트를 이용한 작업 ■ 특화된 테이블 뷰 편집 기능 구현과 테이블 셀의 순서 재배치, 커스텀 셀 제작 방법 ■ 데이터베이스 저장 객체 생성과 추가, 삭제, 조회, 데이터 표시 기법 ■ 대화상자, 프로그레스 바, 로컬과 푸시 노티피케이션, 팝오버, 핑을 활용한 사용자 알림 ■ 피드백 요청과 사용 방법 ■ 네트워크와 서비스의 연결, 본인 확인 처리와 다운로드 관리 기법 ■ 기기, 베타 테스터, 앱스토어에 앱을 등록하고 배포하는 방법 ★ 이 책의 구성 ★ 이 책은 인터페이스 요소의 배치, 사용자와의 상호작용, 로컬 데이터 소스에 대한 접근, 인터넷 연결 등 새로운 iOS 개발자가 당면한 가장 일반적인 문제를 해결하기 위한 예제를 제공한다. 각 장은 이와 연관된 개발 예제를 묶어 당면한 문제의 해결을 위한 최적의 클래스나 프레임워크에 대한 고민 없이 바로 문제 해결 단계로 나아 갈 수 있게 구성했다. 『The iOS 5 Developer's Cookbook 한국어판』은 '언제든지 가져다 쓸 수 있는 실전 코드'를 제공하므로 여러분의 애플리케이션에서 자유롭게 예제 코드를 재사용할 수 있으며, 이후 각자의 필요에 따라 코드를 수정해 사용할 수 있다. 이 책의 각 장에서 다루는 내용은 다음과 같다. ■ 1장 'iOS SDK 소개' 1장에서는 iOS SDK를 소개하고 배포 플랫폼으로서의 iOS에 대한 (제약 사항을 포함한) 모든 내용을 살펴본다. 여기서 표준 iOS 애플리케이션의 개요를 설명하고, iOS 개발자 포털을 통한 개발 준비도 소개한다. ■ 2장 '오브젝티브C 사관학교' iOS는 물론이고 오브젝티브C도 처음 접한다면 2장에서 기본기를 익힐 수 있다. 오브젝티브C는 iOS는 물론 맥 OS X의 표준 프로그래밍 언어로서 애플의 코코아, 코코아 터치 프레임워크를 이용한 애플리케이션 개발을 위한 강력한 객체지향 문법을 사용한다. 2장에서는 오브젝티브C 언어와 객체지향적인 특징의 개요, 메모리 관리 기술, 공통 클래스의 추가 방식 등 오브젝티브 C 프로그래밍을 시작하는 데 필요한 내용을 소개한다. ■ 3장 '첫 번째 iOS 프로젝트' 3장에서는 처음으로 Hello World 스타일의 애플리케이션을 만들기 위한 기본기를 다룬다. 이때 프로젝트 생성 과정에서 엑스코드와 인터페이스 빌더를 어떻게 사용하는지 알아본다. 기본적인 디버깅 도구와 사용 방식, 그리고 간편한 컴파일러 지시자 활용을 위한 팁도 소개한다. 프로비저닝 프로파일 생성 방법과 기기와 베타 테스터, 앱스토어에 애플리케이션을 배포할 때 이 프로파일을 사용하는 방법 등도 살펴본다. ■ 4장 '인터페이스 디자인' 4장은 iOS의 시각 요소를 담은 클래스 라이브러리를 소개한다. 여기서 이들 클래스의 개요와 각 요소의 지오메트리도 살펴본다. 이들 시각적인 클래스를 이용한 작업 방식과 기기 회전 같은 임무가 주어졌을 때 처리 방식도 다룬다. 인터페이스 요소의 배치와 커스터마이징 방법, 인터페이스 빌더와 오브젝티브C를 모두 활용한 하이브리드 기법 등도 함께 알아본다. ■ 5장 '뷰 컨트롤러' 화면 구현에 있어 iOS의 철학은 '작은 화면 크기, 커다란 가상의 세계'라고 할 수 있다. 5장에서는 사용자와 상호작용하기 위한 가상의 공간을 크게 만들거나 순서를 바꿀 수 있는 다양한 뷰 컨트롤러 클래스를 다룬다. iOS 애플리케이션 화면 간의 자연스러운 이동이나 스플릿 뷰로 구현된 아이패드 화면에서의 일관된 화면 이동이 가능하게 복잡한 업무를 처리하는 강력한 뷰 컨트롤러 객체를 살펴본다. ■ 6장 '뷰와 애니메이션' 6장에서는 화면에서 살아 움직이는 iOS의 뷰 요소와 객체를 소개한다. 뷰 요소의 배치와 생성, 순서 설정을 통해 애플리케이션의 기본 골격을 만든다. 뷰의 계층 구조와 지오메트리, 애니메이션과 iOS 애플리케이션에 생동감을 불어넣어줄 기능을 살펴본다. ■ 7장 '이미지 작업' 7장에서는 이미지, 구체적으로는 UIImage 클래스를 소개하고 iOS 이미지로 작업하기 위한 모든 기본 지식을 제공한다. 애플리케이션에 이미지를 불러오고, 저장하고, 수정하는 방법도 함께 알아본다. 뷰에 이미지를 추가하는 방법과 뷰를 이미지로 전환하는 방법도 소개한다. 또한 특수 효과 구현을 위한 이미지 처리 기법과 바이트 단위로 이미지 정보에 접근하는 방법, 기기 내장 카메라에서 사진을 가져오는 방법을 살펴본다. ■ 8장 '제스처와 터치 인터페이스' iOS에서 터치는 애플리케이션과 사용자가 소통할 수 있는 가장 중요한 방법이다. 터치는 버튼 누르기나 키보드 입력 같은 동작에만 한정되지 않는다. 8장에서는 직접 입력 인터페이스와 멀티터치 등을 소개한다. 사용자가 화면을 드래그할 수 있는 뷰 생성 방법을 알아보고, 제스처의 구분과 해석 방법, 커스텀 제스처 인식기를 생성하는 방법을 살펴본다. ■ 9장 '컨트롤 생성과 사용' 컨트롤 클래스는 버튼, 슬라이더, 스위치 같은 iOS의 다양한 상호작용 요소의 근본이 된다. 9장에서는 각 컨트롤 요소를 소개하고 그 사용법을 함께 알아본다. 표준 컨트롤 상호작용 방식과 각 애플리케이션의 필요에 따라 컨트롤 객체를 수정하는 방법도 소개한다. 커스텀 스위치나 별표 점수 컨트롤, 가상 터치 휠 같은 독특한 컨트롤 요소를 가장 기본적인 부분부터 만드는 방법도 살펴본다. ■ 10장 '텍스트 작업' 10장에서는 기존의 텍스트 필드와 텍스트 뷰에서부터 iOS에 새로 추가된 강력한 코어 텍스트의 기능과 철자 확인 기능까지 애플리케이션을 만들면서 알아야 할 iOS 텍스트에 대한 모든 것을 소개한다. ■ 11장 '테이블 뷰 생성과 관리' 테이블은 스크롤이 가능한 상호작용 요소로서 크기가 작은 기기에서 특히 중요한 역할을 한다. iOS의 설정 앱, 유튜브 앱, 그리고 주식 앱과 날씨 앱 등 상당히 많은 수의 아이폰, 아이팟 터치 앱이 테이블 뷰를 중심으로 만들어졌다. 11장에서는 아이폰 테이블의 작동 방식과 개발에서 사용할 수 있는 테이블의 종류, 애플리케이션에서 테이블 기능을 사용하는 방법 등을 알아본다. ■ 12장 '코어 데이터 맛보기' 코어 데이터는 애플리케이션을 통해 조회하고 갱신할 수 있는 체계적인 데이터 저장 기법을 제공한다. 코어 데이터는 SQL 쿼리 방식의 관계형 데이터 관리 기법을 아이폰 개발용 오브젝티브C에 이식한 코코아 터치 기반의 객체 인터페이스를 제공한다. 12장은 코어 데이터를 다루며, 이 기술을 충분히 이해할 수 있는 풍부한 예제를 제공하므로 향후 코어 데이터에 대한 좀 더 깊이 있는 학습이 가능하다. 데이터 저장 기법과 데이터의 추가와 삭제, 코드에서 해당 데이터를 조회하는 방법과 이 데이터를 다시 UIKit 테이블 뷰에 입력하는 방법 등을 알아본다. ■ 13장 '사용자 알림' iOS는 로컬 노티피케이션을 위한 팝업 대화상자와 프로그레스 바, 팝오버와 오디오 핑 같이 사용자에게 특정 상황이나 정보를 알릴 수 있는 많은 방법을 제공한다. 13장에서는 애플리케이션에서 알림을 생성하는 방법을 소개하고, 이를 기반으로 다양한 사용자 알림 기법을 알아본다. 이들 클래스로 작업하는 표준적인 방법을 소개하고, 명시적인 콜백 없이 프로그램이 처리할 수 있는 기법을 살펴본다. ■ 14장 '하드웨어 장치 활용' 각 iOS 기기는 유일하면서도 공유할 수 있고, 순간적이면서도 지속적인 속성을 제공한다. 이러한 속성에는 기기의 현재 회전 방향, 모델명, 배터리 상태, 기기에 탑재된 하드웨어에 대한 접근 등이 포함된다. 14장은 기기의 빌드 환경설정에서부터 사용 가능한 기기 내장 센서에 대해 알아본다. 사용 중인 기기에 관한 다양한 정보를 가져오는 방법을 소개하고, 런타임에서 하드웨어 요구 사항을 테스트하는 방법, 이런 요구 사항을 애플리케이션의 Info.plist 파일에 설정하는 방법을 알아본?. 센서의 피드백 정보와 코어 모션을 이용하는 방법과 센서가 변화를 감지했을 때 콜백을 생성하기 위한 알림 기법도 소개한다. 14장에서는 아이폰 기기에서 사용 가능한 하드웨어, 파일 시스템, 센서를 다루며, 이런 기능을 프로그래밍 기법으로 활용하는 방법을 소개한다. ■ 15장 '네트워킹' iOS는 기본적으로 인터넷 연결 기기이므로 웹 기반 서비스를 이용하는 데 특히 적합하다. 애플은 플랫폼을 만들면서 모든 형태의 네트워크 컴퓨팅 서비스를 제공하고, 이 기술을 지원하기 위한 굳건한 토대를 형성하는 데 모든 노력을 아끼지 않았다. 15장은 네트워크 컴퓨팅을 위한 일반적인 기술을 소개하고, 일상적인 임무를 단순화할 수 있는 예제를 제공한다. 여기서 네트워크 도달 성능, 동기적, 비동기적 다운로드 기법, 작업 큐의 사용 방법, 본인 인증 요청 시 아이폰의 암호 키체인 처리 방법, XML 파싱, JSON 객체의 활용, 새로운 트위터 API 등을 소개한다. |