상세 컨텐츠

본문 제목

아론 힐리가스의 iOS 프로그래밍, 4판

전체 출간 도서

by 비제이퍼블릭 2014. 10. 29. 16:05

본문

 

 

아론 힐리가스의 iOS 프로그래밍, 4

 

저자 아론 힐리가스, 조 콘웨이, 크리스찬 쿠어

역자 이종우

출판사 비제이퍼블릭

출간 20141117()

 

정가 35,000

페이지 670

판형 188 x 245

ISBN 978-89-94774-82-4 (93000)

원서정보 iOS Programming: Big Nerd Ranch Guide, 4/e


도서 예약구매 http://www.yes24.com/24/goods/15047748



책 소개

 

아마존닷컴 iOS & 앱 개발 부문, 베스트셀러 1!


아마존 도서소개 보기

아마존 베스트셀러 보기


《아론 힐리가스의 iOS 프로그래밍, 4판》은 iOS 앱 개발을 위한 필수적인 개념과 도구, 기법 등을 안내한다. 이 책을 읽고 나면 iOS 프로젝트를 다루기 위한 노하우와 자신감을 갖게 될 것이다.

 

이 책은 Big Nerd Ranch의 인기 있는 강좌인 iOS 부트캠프의 검증된 내용과 방법을 기반으로, iOS 개념과 코딩을 함께 다루고 있어 유용한 가르침이 될 것이다. 또한 iOS 플랫폼에서 무엇이 중요한지를 설명하고 더 큰 맥락을 꿰뚫어보는 능력을 전수하고, iOS의 개발 방법과 가용한 많은 기능들을 이해하여 어떤 경우에도 적용할 수 있게 해준다.

 

이 책에서 다루는 내용

 

- Xcode 5, 인스트루먼트, 스토리보드

- 사용자 인터페이스 구성

- ARC strong, weak 레퍼런스

- 터치 이벤트와 제스쳐 처리

- 툴바와 내비게이션 컨트롤러, 스플릿 뷰 컨트롤러

- 오토 레이아웃을 이용한 사용자 인터페이스 조절

- 유동 글자를 이용한 폰트 조절

- 테이블 뷰

- 지역화와 국제화

- 블록 문법과 사용

- 아카이빙과 코어 데이터

- 디버깅

- 애니메이션

- JSON을 이용한 웹 서비스와 통신

- 상태 복원

- 모델--컨트롤러-스토어 디자인 패턴 사용

 

시스템 사양


 이 책은 Xcode 5.0.2, iOS 7 버전 기준으로 쓰였으며이후 버전에서는 조금 달라 보일 수 있지만 적용하는 데 크게 문제될 것은 없다하위 버전의 Xcode는 기존 앱스토어 계정을 사용하거나 개발자 등록(무료후 https://developer.apple.com/downloads/에서 다운로드 가능하다.


 

독자대상

 

초중급

 

소스코드 다운로드

 

http://www.bignerdranch.com/solutions/iOSProgramming4ed.zip

 

 

저자 소개

 

아론 힐리가스

 

Big Nerd Ranch의 설립자로 NeXT와 애플에서 일했으며 20여년 가까운 프로그래밍 경험을 가지고 있고 Objective-C, 코코아, iOS를 가르치고 있다. 아론은 《코코아 프로그래밍》과 《오브젝티브-C 프로그래밍》의 공동 저자다.

 

조 콘웨이

 

iOS 부트캠프의 강의 자료를 공동으로 작성했다. 조는 최근 stable/kernel이라는 모바일 개발 회사를 시작했다. 이 회사는 Big Nerd Ranch의 방식을 근간으로 만든 고품질 소프트웨어를 전달하는 데 집중하고 있다.

 

크리스찬 쿠어

 

Big Nerd Ranch에서 상급 강사와 소프트웨어 엔지니어로 일하고 있다. 많은 찬사를 받고 있는 iOS 부트캠프의 강의 자료를 작성했으며, 이는 이 책의 근간이 되었다. 크리스찬은 조지아 공대에서 컴퓨터 과학을 전공했으며, 아틀란타 주위의 맴돌며 별을 바라보거나 책을 읽는 취미를 가지고 있다.

 

 

역자 소개

 

이종우

 

상명대학교에서 소프트웨어학을 전공했으며 한글과컴퓨터와 SK컴즈에서 맥과 리눅스용 제품을 개발했다. 《가장 쉬운 리눅스 시스템 관리 책》과 《리눅스 커맨드라인 완벽 입문서》를 번역했으며, 현재는 안랩에서 맥용 보안 프로그램을 개발하고 있다.

 

 

목차

 

1. 간단한 iOS 앱 만들기

 

- Xcode 프로젝트 만들기

- 모델--컨트롤러

- Quiz 앱 설계하기

- 뷰 컨트롤러 만들기

- 인터페이스 구성하기

- 모델 객체 만들기

- 통합하기

- 시뮬레이터에서 실행하기

- 앱 배포하기

- 앱 아이콘

- 시작 이미지

 

2. Objective-C

 

- 객체

- 인스턴스 사용하기

- RandomItems 커맨드라인 프로그램

- Objective-C 클래스의 하위 클래스 만들기

- NSArray NSMutableArray

- 예외와 인식할 수 없는 셀렉터

- 도전 과제

- 동메달 과제: 버그 찾기

- 은메달 과제: 다른 초기화 메소드 만들기

- 금메달 과제: 하위 클래스 만들기

- 호기심이 많은 사람들을 위해

- 심화 학습: 클래스 이름

- 심화 학습: #import @import

 

3. ARC를 통한 메모리 관리

 

- 스택

-

- 포인터 변수와 객체 소유권

- 강한 참조와 약한 참조

- 프로퍼티

- 심화 학습: 프로퍼티 합성

- 심화 학습: 오토릴리즈 풀과 ARC 역사

 

4. 뷰와 뷰 계층구조

 

- 뷰 기본 지식

- 뷰 계층구조

- UIView 하위 클래스 만들기

- drawRect: 메소드에서 그리기

- 추가 개발자 문서

- 동메달 과제: 이미지 그리기

- 심화 학습: 코어 그래픽스

- 금메달 과제: 그림자와 그라디언트

 

5. 뷰 다시 그리기와 UIScrollView

 

- 런 루프와 뷰 다시 그리기

- 클래스 확장

- UIScrollView 사용하기

 

6. 뷰 컨트롤러

 

- UIViewController 하위 클래스 만들기

- 두 번째 UIViewController

- UITabBarController

- UIViewController 초기화 메소드

- 로컬 노티피케이션 추가하기

- 뷰 로드하기와 나타내기

- 뷰 컨트롤러와 뷰 간의 상호작용

- 동메달 과제: 세 번째 탭

- 은메달 과제: 세그먼트 컨트롤

- 심화 학습: -값 코딩

- 심화 학습: 레티나 디스플레이

 

7. 델리게이션과 텍스트 입력

 

- 텍스트 필드

- 델리게이션

- 프로토콜

- 화면에 라벨 추가하기

- 모션 효과

- 디버거 사용하기

- 심화 학습: main() UIApplication

- 은메달 과제: 핀치 투 줌

 

8. UITableView UITableViewController

 

- Homepwner 앱 만들기

- UITableViewController

- UITableView 데이터 소스

- UITableViewCell

- 코드 스니핏 라이브러리

- 동메달 과제: 멀티 섹션

- 은메달 과제: 고정 행

- 금메달 과제: 테이블 커스터마이징

 

9. UITableView 편집

 

- 편집 모드

- 행 추가하기

- 행 삭제하기

- 행 이동하기

- 동메달 과제: Delete 버튼 이름 변경하기

- 은메달 과제: 재정렬 막기

- 금메달 과제: 재정렬 완전히 막기

 

10. UINavigationController

 

- UINavigationController

- 추가적인 UIViewController

- UINavigationController로 내비게이션하기

- UINavigationBar

- 동메달 과제: 숫자 패드 표시하기

- 은메달 과제: 숫자 패드 사라지게 하기

- 금메달 과제: 더 많은 뷰 컨트롤러 푸시하기

 

11. 카메라

 

- 이미지 표시하기와 UIImageView

- 사진 찍기와 UIImagePickerController

- BNRImageStore 만들기

- NSDictionary

- 키 만들고 사용하기

- BNRImageStore 마무리하기

- 키보드 닫기

- 동메달 과제: 이미지 편집하기

- 은메달 과제: 이미지 제거하기

- 금메달 과제: 카메라 오버레이

- 심화 학습: 구현 파일 내비게이션

- 심화 학습: 비디오 녹화

 

12. 터치 이벤트와 UIResponder

 

- 터치 이벤트

- TouchTracker 앱 만들기

- BNRDrawView에 그리기

- 터치를 선으로 변환하기

- 동메달 과제: 저장하기와 로드하기

- 은메달 과제: 색상

- 금메달 과제:

- 심화 학습: 리스폰더 체인

- 심화 학습: UIControl

 

13. UIGestureRecognizer UIMenuController

 

- UIGestureRecognizer 하위 클래스

- UITapGestureRecognizer로 탭 인식하기

- 멀티 제스처 인식기

- UIMenuController

- UILongPressGestureRecognizer

- UIPanGestureRecognizer와 동시에 인식하기

- 심화 학습: UIMenuController UIResponderStandardEditActions

- 심화 학습: UIGestureRecognizer의 세부사항

- 은메달 과제: 미스터리한 선들

- 금메달 과제: 속도와 크기

- 대형 금메달 과제: 색상

 

14. 디버그 도구

 

- 디버그 측정기

- 인스트루먼트

- 정적 분석기

- 프로젝트, 타깃, 빌드 세팅

 

15. 오토 레이아웃 소개

 

- Homepwner를 유니버설 앱으로 만들기

- 오토 레이아웃 시스템

- 인터페이스 빌더로 제약조건 추가하기

- 제약조건 디버깅

- 동메달 과제: 예제 보완하기

- 은메달 과제: Quiz를 유니버설 앱으로 만들기

- 심화 학습: 오토 레이아웃 트레이스를 이용한 디버깅

- 심화 학습: 복수의 XIB 파일

 

16. 오토 레이아웃: 프로그래밍으로 제약조건 만들기

 

- 비주얼 포맷 언어

- 제약조건 만들기

- 제약조건 추가하기

- 고유 콘텐츠 크기

- 제약조건을 만드는 다른 방법

- 심화 학습: NSAutoresizingMaskLayoutConstraint

 

17. 자동 회전, 팝오버 컨트롤러, 모달 뷰 컨트롤러

 

- 자동 회전

- 회전 노티피케이션

- UIPopoverController

- 모달 뷰 컨트롤러에 대해 좀 더 알아보기

- 스레드에 안전한 싱글톤

- 동메달 과제: 또 다른 스레드에 안전한 싱글톤

- 금메달 과제: 팝오버 모습

- 심화 학습: 비트마스크

- 심화 학습: 뷰 컨트롤러 관계

 

18. 저장, 읽기, 앱 상태

 

- 아카이빙

- 앱 샌드박스

- NSKeyedArchiver NSKeyedUnarchiver

- 앱 상태와 전이

- NSData를 파일시스템에 쓰기

- NSNotificationCenter와 로우 메모리 경고

- 모델--컨트롤러-스토어 디자인 패턴

- 동메달 과제: PNG

- 심화 학습: 앱 상태 전이

- 심화 학습: 파일시스템에서 읽고 쓰기

- 심화 학습: 앱 번들

 

19. UITableViewCell 하위 클래스 만들기

 

- BNRItemCell 만들기

- 이미지 조작

- UITableViewCell에서 액션 전달하기

- 변수 캡처하기

- 동메달 과제: 색상 코딩

- 금메달 과제:

- 심화 학습: UICollectionView

 

20. 유동 글자

 

- 선호 폰트 사용하기

- 사용자의 변경에 응답하기

- 오토 레이아웃 갱신하기

- 사용자 선호 텍스트 크기 정하기

 

21. 웹 서비스와 UIWebView

 

- 웹 서비스

- UIWebView

- 자격 증명

- 은메달 과제: UIWebView 추가 내용

- 금메달 과제: 예정 강좌

- 심화 학습: HTTP 요청 보디

 

22. UISplitViewController

 

- Nerdfeed 분할하기

- 세로 모드에서 마스터 뷰 컨트롤러 표시하기

- Nerdfeed 유니버설 앱

 

23. 코어 데이터

 

- 객체-관계형 매핑

- Homepwner를 코어 데이터로 옮기기

- SQL에 대해 좀 더 알아보기

- 폴트

- 영구 저장 기법의 장단점

- 동메달 과제: 아이패드에서 품목 종류 나타내기

- 은메달 과제: 새로운 품목 종류 추가하기

- 금메달 과제: 품목 보여주기

 

24. 상태 복원

 

- 차례 상태 복원 방법

- 상태 복원 활성화하기

- 복원 식별자와 복원 클래스

- 상태 복원 주기

- 뷰 컨트롤러 복원하기

- 관련 데이터 인코딩하기

- 뷰 상태 저장하기

- 은메달 과제: 다른 프로그램

- 심화 학습: 스냅샷 제어하기

 

25. 지역화

 

- NSNumberFormat을 사용한 국제화

- 리소스 지역화하기

- NSLocalizedString()과 문자열 테이블

- 동메달 과제: 다른 언어로 지역화

- 심화 학습: 국제화에서 NSBundle의 역할

- 심화 학습: Base 국제화 없이 XIB 파일 지역화하기

 

26. NSUserDefaults

 

- NSUserDefaults

- 설정 번들

 

27. 애니메이션 제어

 

- 기본 애니메이션

- 키프레임 애니메이션

- 애니메이션 완료

- 스프링 애니메이션

- 은메달 과제: Quiz 앱 개선

 

28. UIStoryboard

 

- 스토리보드 만들기

- 스토리보드 내의 UITableViewController

- 세그웨이

- 색상 변경하기

- 데이터 전달하기

- 스토리보드에 대해 좀 더 알아보기

- 심화 학습: 상태 복원

 

29. 후기

 

 

이 책의 구성

 

이 책의 각 장은 iOS 개발에 대한 하나 이상의 개념을 설명하고 실습을 하도록 구성됐다. 코딩 실습이 더 필요한 경우를 위해 도전 과제를 포함해두었다. 최소한 몇 가지는 도전해보길 바란다. 이 과제들은 각 장에서 배운 개념을 더 견고하게 해주며 iOS 프로그래머로서 자신감을 북돋아준다. 마지막으로 각 장에 포함된심화 학습절은 이전에 소개한 개념의 활용 방법을 설명한다.

 

1에서는 작고 간단한 프로그램을 만들고 배포하면서 iOS 프로그래밍을 소개한다. 프로젝트와 파일을 생성하는 과정을 통해 Xcode iOS 시뮬레이터를 사용하게 될 것이다. 이 장에서는 모델--컨트롤러와 iOS 개발의 연관성도 살펴볼 것이다.

 

23에서는 Objective-C와 메모리 관리에 대해 개괄한다. 이 장에서는 iOS 앱을 만들지는 않지만 개념을 이해하기 위해 RandomItems라는 도구를 만들고 디버깅할 것이다.

 

45에서는 Hypnosister라는 프로그램을 만들고 뷰와 뷰의 계층구조에 대해 배우면서 iOS 사용자 인터페이스에 초점을 맞출 것이다.

 

67에서는 HypnoNerd 앱을 통해 사용자 인터페이스를 관리하는 뷰 컨트롤러를 소개한다. 탭 바를 이용한 화면 간 이동과 함께 뷰와 뷰 컨트롤러를 사용해볼 것이다. 또한 프로토콜을 이용한 델리게이션 디자인 패턴을 접해보고 디버거, 로컬 노티피케이션을 설정하는 법을 배울 것이다.

 

8에서는 이 책에서 가장 큰 프로그램인 Homepwner를 소개한다(“Homepwner”는 오타가 아니며 “pwn”의 의미는 www.urbandictionary.com에서 찾을 수 있다). 이 프로그램은 화재나 재난에 대비해 소지품 목록을 기록한다. Homepwner는 자그마치 14개의 장을 통해 완성된다.

 

8, 9, 19에서는 테이블을 만들어본다. 테이블 뷰, 뷰 컨트롤러, 데이터 소스에 대해 배울 것이다. 테이블에 데이터를 표시하는 방법과 사용자가 테이블을 편집할 수 있게 허용하는 방법, 인터페이스를 향상시키는 방법을 배울 것이다.

 

10에서는 6장에서 배운 내용을 토대로 내비게이션을 완성한다. UINavigation Controller의 사용법을 배우고 Homepwner에 드릴 다운(drill-down) 인터페이스와 내비게이션바를 추가할 것이다.

 

11에서는 카메라로 사진을 찍는 방법과 Homepwner에 이미지를 저장하고 표시하는 방법을 살펴본다. 이때 NSDictionary UIImagePickerController를 사용할 것이다.

 

1213에서는 잠시 Homepwner에서 벗어나 터치 이벤트를 배우기 위해 드로잉 프로그램인 TouchTracker를 만들어본다. 그리고 멀티 터치를 지원하는 법과 UIGestureRecognizer를 사용하여 특정 제스처를 인식하는 법을 배울 것이다. 또한 퍼스트 리스폰더(first responder)와 리스폰더 체인(responder chain)의 개념에 대해 알아보고 NSDictionary의 활용에 대해 배울 것이다.

 

14에서는 디버그 가우즈(debug gauges)와 인스트루먼트(Instruments), 정적 분석기를 사용하여 TouchTracker의 성능을 최적화하는 법을 배울 것이다.

 

15 16에서는 Homepwner를 유니버설(universal) 앱으로 만들어본다. 유니버설 앱은 아이폰과 아이패드 모두에서 사용 가능한 앱을 말한다. 또한 화면 크기에 따라 알맞게 표시되는 오토 레이아웃(Auto Layout) 기능을 지원하는 인터페이스를 만들어볼 것이다.

 

17에서는 화면 회전을 제어하는 법과 아이패드에서 UIPopoverController를 사용하는 법, 모달 뷰 컨트롤러에 대해 배울 것이다.

 

18에서는 데이터를 저장하고 불러오는 법을 살펴본다. 그리고 Homepwner 프로그램에 데이터를 저장해볼 것이다.

 

20에서는 사용자가 원하는 다양한 폰트 크기를 지원하도록 유동 글자를 사용하여 Homepwner를 개선할 것이다.

 

21에서는 다시 Homepwner에서 벗어나 웹 서비스를 소개하기 위해 Nerdfeed 앱을 만들어본다. Nerdfeed NSURLConnection NSXMLParser를 사용하여 서버에서 RSS 피드를 가져와서 해석한다. 그리고 UIWebView를 이용하여 웹 페이지를 표시한다.

 

22에서는 UISplitViewController에 대해 배우고 Nerdfeed 앱에 스플릿 뷰 인터페이스를 추가해 아이패드의 큰 화면을 활용해볼 것이다.

 

23에서는 Homepwner 앱으로 돌아와서 코어 데이터에 대해 설명한다. NSManaged ObjectContext를 사용해 데이터를 저장하고 불러오도록 Homepwner를 수정할 것이다.

 

24에서는 사용자가 앱으로 돌아왔을 때 마지막 상태로 돌아가도록 하는 상태 복원 기능을 Homepwner 앱에 추가할 것이다.

 

25에서는 국제화(internationalization)와 지역화(localization)의 개념과 사용법에 대해 소개한다. Homepwner를 지역화하면서 NSLocale, 문자열 테이블, NSBundle에 대해 배울 것이다.

 

26에서는 사용자 설정을 저장하기 위해 NSUserDefaults를 사용해본다. 이 장에서 드디어 Homepwner 프로그램을 완성할 것이다.

 

27에서는 HypnoNerd 앱에 애니메이션을 구현하면서 코어 애니메이션 프레임워크를 소개한다.

 

28에서는 스토리보드를 이용하여 앱을 만드는 법을 소개한다. UIStoryboard를 사용하여 앱을 만들어보고 스토리보드 사용의 장단점을 배울 것이다.

 

 

출판사 리뷰

 

이 책을 읽으면서 그 내용이 당장은 이해가 되지 않는다고 낙담할 필요는 없다. 때로는 인내심을 가지고 이 책을 믿고 따라야 할 때도 있을 것이다.

 

한꺼번에 모든 지식을 전달하지 않기에, 어떤 개념이 명확하게 제시되지 않았다면 그것은 뒷부분에서 필요할 때 더 자세히 설명하기 위해 의도된 것이다. 처음 접할 때 명확하지 않던 개념이 한 순간 이해되는 경험을 하게 될 것이다.

 

관련글 더보기

댓글 영역

  • 프로필 사진
    2014.11.10 18:21
    오브젝트c 프로그래밍을 먼저 보고 봐야하나요? 아니면 이것만 봐도되나요?
    • 프로필 사진
      2014.11.10 21:06 신고
      다른 도서를 통해 오브젝티브-C에 대한 기본적인 지식을 습득하셔야 할 것 같습니다. 이 책만으로는 부족할 것 같습니다.