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

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

  • 임베디드 & 모바일 시리즈 _ 015
  • ISBN: 9788992939836
  • 36,000원 | 2011년 06월 28일 발행 | 800쪽



이 책은 『시작하세요 아이폰 3 프로그래밍』의 개정판이다. 이번 개정판에서는 책의 모든 코드를 한 줄씩 살펴보고 최신 버전의 iOS와 SDK에 맞게끔 각 프로젝트의 코드를 수정했다. 모든 프로젝트는 최신 버전인 XCode 4를 기준으로 생성했으며, 설명도 최신 버전에 맞게끔 모두 수정했다.

이 책은 프로그래밍 도구 설치부터 iOS SDK의 최신 기능인 다중 스레딩 프로그래밍에 이르기까지 iOS 프로그래밍과 관련한 모든 내용을 상세히 다룬다. 특별히 개정판에서는 아이패드의 사용자 경험을 고려한 애플리케이션 개발 방법과 다중 스레딩을 활용한 고급 프로그래밍 기법을 위해 별도로 장을 할애하고 있다. 이 책을 통해 독자들은 iOS 프로그래밍의 기본 원리를 쉽게 익힐 수 있음은 물론, 어렵게만 보였던 테이블 뷰나 내비게이션 컨트롤러의 동작 원리를 배울 수 있고, 저자들이 계속해서 강조하는 '메모리 관리 모범 시민 되기' 원칙에 따라 메모리 관리를 위한 코딩 습관을 몸에 익힐 수 있을 것이다.

『시작하세요 아이폰 4 프로그래밍』은 단순히 iOS 4 SDK에서 추가된 내용뿐 아니라 iOS 프로그래밍 전반을 다루고 있으므로 기존 개발자뿐 아니라 새로 iOS 프로그래밍에 입문하는 독자들이 읽기에도 좋은 책이다. 아울러 이 책의 이전 버전을 갖고 있는 독자라 하더라도 책의 내용 설명 중 여러 곳이 수정됐으므로 이 책의 내용을 처음부터 끝까지 읽어볼 것을 추천한다.

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

베스트셀러인 『시작하세요! 아이폰 3 프로그래밍』의 저자들이 돌아왔다. 이번에는 iOS 4와 애플의 Xcode 4에 맞춰 설명을 처음부터 완전히 업데이트함은 물론 책의 설명을 한층 더 보강했다. 이 책의 모든 소스는 Xcode의 최신 템플릿과 현재 API에 맞춰 다시 작업했으며 iOS4와 Xcode 4에 맞게끔 캡처 화면도 모두 바꿨다.

『시작하세요! 아이폰 4 프로그래밍』은 iOS 개발 과정을 모두 다루는 지침서다. 이 책을 통해 독자들은 아이폰, 아이패드, 아이팟 터치에서 동작하는 애플리케이션 개발 기술을 마스터할 수 있다. 이 책에서는 필요한 도구의 다운로드 및 설치, 간단한 첫 번째 애플리케이션을 만드는 법 등 기초 지식부터 설명한다. 이어서 버튼, 스위치, 피커, 툴바, 슬라이더처럼 iOS 사용자들이 익히 알고 있고 자주 사용하는 모든 인터페이스 요소의 연동 방법을 설명한다. 이 책을 통해 독자들은 단일 뷰에서부터 복잡한 계층적 드릴다운 뷰에 이르기까지 다양한 디자인 패턴을 마스터할 수 있다. 또 어렵게만 보였던 테이블 데이터 표현을 쉽게 익힐 수 있으며, 아이폰의 내장 데이터베이스 관리 시스템인 SQLite와 SDK 3 이후 애플에서 iOS의 표준 영속화 수단으로 내놓은 코어 데이터를 활용해 데이터를 저장하고 조회하는 방법도 배울 수 있다.

그 외에도 이 책에는 많은 내용이 있다. 이 책에서는 쿼츠 2D와 오픈GL ES를 활용한 드로잉, 애플리케이션에 대한 멀티터치 제스처(핀치와 스와이프) 지원 기능, 카메라, 사진 라이브러리, 가속도계, 내장 GPS와의 연동도 다룬다. 또 애플리케이션 환경설정과 애플리케이션을 다양한 언어로 지역화하는 법도 배운다. 아울러 iOS 4에 새롭게 포함된 동시성 API와 그랜드 센트럴 디스패치를 활용한 강력한 다중 스레드 애플리케이션을 개발하는 방법 또한 이 책에서 배울 수 있다. 이 책의 특징

  • 베스트셀러이자 코코아 터치 개발자에게 가장 많이 추천하는 저서인 『시작하세요! 아이폰 3 프로그래밍』의 아이폰 4 개정판
  • 독자들이 쉽게 이해하고 따라 하기 쉽게끔 책의 내용을 구성
  • iOS 전문 개발자가 되도록 도와주는 팁과 기법으로 가득 찬 설명

데이브 마크 (Dave Mark)

데이브 마크는 오랫동안 맥 개발자이자 저자로 일하고 있으며 맥과 iOS 개발과 관련한 다양한 책을 저술했다. 저서로는 'Beginning iPhone 3 Development(Apress, 2009)', 'More iPhone 3 Development(Apress, 2010)', 'Learn C on the Mac(Apress, 2008)', 'The Macintosh Programming Primer 시리즈(Addison-Wesley, 1992)', 'Ultimate Mac Programming(Wiley, 1995)' 등이 있다. 데이브는 iOS와 안드로이드 개발 업체인 MartianCraft의 대표다. 데이브는 물가를 좋아하고 가능한 한 물가 가까운 곳에서 시간을 보낸다. 그는 아내와 세 아이와 함께 버지니아에서 살고 있다.

 

잭 너팅 (Jack Nutting)

잭 너팅은 코코아를 코코아라고 부르기 전부터 코코아를 사용했다. 잭은 코코아와 코코아의 전신을 활용해 게임, 그래픽 디자인, 온라인 디지털 배포, 텔레콤, 금융, 출판, 여행 등 다양한 산업 분야의 애플리케이션을 개발했다. 맥이나 iOS 프로젝트 관련한 작업을 하지 않을 때는 루비 온 레일즈를 사용해 웹 애플리케이션을 개발하기도 한다. 잭은 오브젝티브-C와 코코아 프레임워크의 열렬한 지지자다. 잭은 동적 디스패치와 런타임 시 클래스의 수정에 대한 장점을 관심 있는 사람들에게 (때로는 관심 없는 사람들에게도) 언제든 쉬지 않고 말할 수 있는 사람이다. 잭은 '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 3 Development(Apress, 2009)', 'More iPhone 3 Development(Apress, 2010)', 'Learn Cocoa on the Mac(Apress, 2010)' 등 다양한 iOS와 맥 관련 책을 저술했다. 제프도 iOS와 안드로이드 개발 업체인 MartianCraft의 대표다. 제프는 MacTech Magazine뿐 아니라 애플의 개발자 사이트에도 코코아와 오브젝티브-C에 대한 글을 기고한 바 있다. 또 제프는 많은 사람이 구독하는 자신의 블로그인 http://iphonedevelopment.blogspot.com에 iOS 개발에 대한 내용을 쓰고 있다.

유윤선

인디 개발자이자 프리랜서 번역가로 활동 중이다. 이따금씩 http://joshy21.com/weblog에 번역과 상관없는 글을 올리고 있다. 역서로는 '플래시 빌더 4 & 플렉스 4 바이블(위키북스)', '스프링 3 레시피(위키북스, 공역)', '액션스크립트 3.0 완벽가이드(인사이트, 공역)' 등이 있다.

 

옮긴이 글

이 책은 이미 한국 독자들에게 잘 알려진 『시작하세요 아이폰 3 프로그래밍』의 개정판이다. 이번 개정판에서는 iOS 4 SDK에 맞게 프로젝트 코드를 조금씩 수정하고, 새로운 장을 몇 개 추가했으며, 설명도 보강했다. 역자는 이 책을 통해 처음 개발을 시작하는 독자들을 배려해 번역 과정에서 Xcode 4 기준으로 책의 모든 설명을 수정했다. 이 책이 iOS 프로그래밍을 처음 시작하는 독자는 물론 iOS 4 SDK의 새롭고 강력한 기능을 활용해 애플리케이션을 개발하고자 하는 기존 개발자들에게도 큰 도움이 되기를 바란다.

 

이 책에서 다루는 내용

이 책은 프로그래밍 도구 설치부터 iOS SDK의 최신 기능인 다중 스레딩 프로그래밍에 이르기까지 iOS 프로그래밍과 관련한 모든 내용을 상세히 다룬다. 특별히 개정판에서는 아이패드의 사용자 경험을 고려한 애플리케이션 개발 방법과 다중 스레딩을 활용한 고급 프로그래밍 기법을 위해 별도로 장을 할애하고 있다. 이 책을 통해 독자들은 iOS 프로그래밍의 기본 원리를 쉽게 익힐 수 있음은 물론, 어렵게만 보였던 테이블 뷰나 내비게이션 컨트롤러의 동작 원리를 배울 수 있고, 저자들이 계속해서 강조하는 '메모리 관리 모범 시민 되기' 원칙에 따라 메모리 관리를 위한 코딩 습관을 몸에 익힐 수 있을 것이다. 이 책은 장과 장의 예제가 별도로 작성돼 있으므로 특정 주제를 학습하고자 하는 독자라면 언제든 해당 장을 펼쳐서 내용을 살펴볼 수 있다. 특별히 이 책의 이전 버전을 갖고 있는 독자라면 아이패드의 사용자 경험에 대해 다루는 10장과, 다중 스레드에 대해 다루는 13장을 먼저 읽어보면 많은 도움이 될 것이다.

이 책의 장점은 저자들의 혜안이 담겨 있다는 것이다. 이 책을 통해 독자들은 iOS 프로그래밍의 모범 개발 방식(best practice)을 자연스럽게 익힐 수 있다. 예를 들어 속성으로 사용할 내부 변수를 명시적으로 선언하는 습관이나 #pragma를 활용한 코드 구조화, 기저 컨트롤러의 구현과 컨트롤러 상속을 통한 코드 재사용 등은 저자들이 주는 이런 혜안 중 일부에 지나지 않는다.

 

이 책의 대상 독자

이 책은 단순히 iOS 4 SDK에서 추가된 내용뿐 아니라 iOS 프로그래밍 전반을 다루고 있으므로 기존 개발자뿐 아니라 새로 iOS 프로그래밍에 입문하는 독자들이 읽기에도 좋은 책이다. 아울러 이 책의 이전 버전을 갖고 있는 독자라 하더라도 책의 내용 설명 중 여러 곳이 수정됐으므로 이 책의 내용을 처음부터 끝까지 읽어볼 것을 추천한다.

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

    이 메뉴에서 Pressed: -> 이 메뉴에서 buttenPressed:

  • 78 페이지

    인터페이스 빌드 -> 인터페이스의 개발

  • 130 페이지

    그림 5-8에서 상단부터 좌 -> 우측순으로 1, 2, 3, 4, 5, 6 번호 표시가 누락돼 있습니다.

  • 161 페이지

    -(void) application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions { 메서드에서

    [self.window addSubView:switchViewController.view] <= 볼드체

  • 170 페이지

    (그림 6-19 참고) -> (그림 6-20 참고)

  • 225 페이지

    <UIPickerViewDataSource, UIPickerViewDelegate> {부터 -(IBAction)spin;까지 모두 볼드체

  • 238 페이지

    button.hidden = YES; 볼드체

  • 274 페이지

    그림 8-16. 그림에서는 Table View가 선택돼 있지만 실제로는 Table View Cell을 선택하는 게 맞음

  • 280 페이지

    <UITableViewDataSource, UITableViewDelegate> 볼드체

  • 293 페이지

    #import "NSDictionary-MutableDeepCopy.h" 볼드체

  • 307 페이지

    [keyArray addObject:UITableViewIndexSearch]; 볼드체

  • 345 페이지

    그런 후에는 선언한 문자열을 릴리스하고 셀을 반환한다.
    [rowTitle release]; return cell;

    -> 그런 후에는 셀을 반환한다.
    return cell; (원문의 오류가 번역 과정에서 그대로 반영됨)

  • 375 페이지

    @implementation President 볼드체 아님

  • 421 페이지

    cell.textLabel.text = [president objectForKey:@"name"]; 취소선 아님

  • 431 페이지

    이 함수는 조금 전 synthesize 명령문 바로 전, 파일 상단부에 추가해 보자 -> 이 함수는 조금 전 synthesize 명령 바로 다음, 파일 상단부에 추가하자.

  • 433 페이지

    self.languageButton = nil;
    self.languagePopOverController = nil;

    모두 볼드체

    [languageButton release];
    [languagePopoverController release];

    모두 볼드체

  • 433페이지에서 언어 버튼을 연속 탭할 경우 런타임 예외가 나는 코드 수정

    - (IBAction)touchLanguageButton {
    
           if(self.languagePopoverController == nil)
           {
               LanguageListController *languageListController = [[LanguageListController alloc]
                                                                init];
               languageListController.detailViewController = self;
               UIPopoverController *poc = [[UIPopoverController alloc]
                                           initWithContentViewController:languageListController];
               [poc presentPopoverFromBarButtonItem:languageButton 
                           permittedArrowDirections:UIPopoverArrowDirectionAny 
                                           animated:YES];
    
               self.languagePopoverController = poc;
               [poc release];
    
    
               [languageListController release];
           }
           else
           {
               if ([self.languagePopoverController isPopoverVisible])
               {
                   [languagePopoverController dismissPopoverAnimated:YES];
               }
               else
               {
                   [languagePopoverController presentPopoverFromBarButtonItem:languageButton 
                               permittedArrowDirections:UIPopoverArrowDirectionAny 
                                               animated:YES];
               }
           }
    }
    
  • 472 페이지

    [NSNotificationCenter defaultCenter] removeObserver:self]; 볼드체

  • 494 페이지

    @implementation FourLines 볼드체 아님

  • 495 페이지

    #define kFilename @"data.plist" 삭제

  • 504 페이지

    #define kFilename @"data.plist" 
    #define kFilename @"archive"    
    

    모두 삭제

  • 505 페이지

    NSString *filePath = [self dataFilePath]; 부터 sqlite3 *database; 바로 앞 괄호까지 모두 삭제

  • 564 페이지

    [self rotateLabelDown]; 볼드체 아님

  • 591 페이지

    typedef enum{ 볼드체

  • 647 페이지

    UISwipeGestureRecognizer *vertical; 볼드체

  • 675 페이지

    <CLLocationManagerDelegate> 볼드체

  • 691 페이지

    [motionManager stopAccelerometerUpdates]; 볼드체

  • 702 페이지

    UIImageView *imageView; 볼드체

  • 708 페이지

    #define kUpdateInterval (1.0f/60.0f) 볼드체

  • 709 페이지

    #import <CoreMotion/CoreMotion.h> 볼드체

예제코드 관련 GitHub 페이지

관련 글