1장 파티클 시스템: 생각보다 쉽고 재미있다
1 파티클로 게임에 생기를 불어 넣기
2 아이폰에 맞는 파티클 시스템
예제 코드 살펴보기
게임의 기본 흐름
파티클 시스템의 해부
파티클 만들기!
퇴화된 삼각형
코드로 돌아가자
랜덤 숫자와 초기 조건
파티클의 분출
3 파티클 시스템 트윅
포스가 파티클과 함께 하기를
4 놀랍고 화려한 꿈의 파티클
보간법
색이 변하는 파티클
맺음말
2장 인터넷으로 하는 체스: Deep Green으로 즐기는 메시지 통신 게임
1 Deep Green은 이미 인기 있는 게임이다
2 해야 할 일들
친구를 게임에 초대하기
초대 수락하기
체스 말 움직이기
알림 메시지 받기
3 소중한 자산과도 같은 도구들
4 이야기는 그만, 코딩의 시작!
도구들 설치하기
웹 서비스 코딩하기
디바이스에서의 작업
체스 말 움직이기
맺음말
3장 오디오 스트리밍: 코어 오디오 탐험
1 여보게, 나는 음원을 재생할 수 있는 애플리케이션을 개발할 수 있다네…
2 MPMoviePlayerController: 참 쉽군요!
3 더 나은 방법을 찾아서
시스템 사운드를 이용하는 방법
AVAudioPlayer: 베타 버전에는 없는 방법
4 코어 오디오를 가지고 카우보이처럼 해결하는 방법
이제 절반까지 도달한 것일세: 오디오 큐 서비스
조금만 힘을 내면 목표 지점이다: 오디오 파일 스트림 서비스
5 애플리케이션에 모든 것을 집어 넣자
한 가지 더
6 실행!
7 아이폰 3.0과 이후 작업
맺음말
4장 당장 버그를 때려잡자! 아이폰에서 디버깅하기
1 전제 조건
2 Objective-C vs C/C++
3 당신이 코드를 작성하는 사이에
커스텀 Asserts
커스텀 로깅
#define 사용하기
4 크래쉬!
테스터로부터 크래쉬 로그 받기
우리는 dSYM 파일들을 보관하고 있습니다 확실합니까?
크래쉬 로그를 심볼화하기
atos 사용하기
5 재현이 어려운 크래쉬들을 재현하는 방법
스레드
시스템
레이스 컨디션
6 디버깅의 과학적인 접근방법
가설을 세운다
가설을 위한 검증 절차 계획하기
가설을 증명하거나 혹은 부정하거나
크래쉬의 발생 확률 높이기
7 콜 스택 정보를 갖고 있다. 그러나…
코드의 시작
메모리 깨짐이란 무엇인가?
메모리 깨짐 확인하기
메모리 문제 감지도구
변수값 보기
링크 맵 파일
맺음말
5장 잠깐 기다려봐!: SQLite로 데이터 기반 애플리케이션 만들기
1 지름길로 가기 위해 절벽에서 점프하다(왜 이런 선택을 하게 되었는가)
2 아이폰 앱 개발을 시작한 이유
3 아이폰의 데이터 기반 애플리케이션
4 액티브 레코드: 데이터에 접근하는 간단한 방법
5 C API를 감싸는 데이터베이스 랩퍼: ISDatabase
예제 프로젝트 셋업
데이터베이스 생성과 초기화
데이터베이스에 연결하기
간단한 요청 생성
6 고급 SQL
중복된 Create 구문 방지하기
파라미터 처리
리펙토링과 정리
여러 Statement 구문을 트랜잭션 단위로 그룹화하기
7 간단한 액티브 레코드 레이어 작성: ISModel
데이터베이스 연결 유지하기
모델 객체: Grocery 아이템
Grocery들이 매핑되는 방법
저장
갱신
삭제
식료품 아이템 찾기
모든 것들을 한 자리에
8 간단한 마이그레이션
9 다른 구현 방법
맺음말
6장 코어 데이터와 하드코어 디자인
1 코어 데이터의 역사?
손님은 왕이다
2 첫 번째 코어 데이터 어플리케이션
첫째, 코드를 훔쳐라(음악이 아니라!)
모든 객체에 대한 뷰
첫 크래쉬거나 아니거나!
3 아이폰 OS를 위한 코어 데이터 개발 설명서: 모델 마이그레이션 관리
간단하게 마이그레이션을 할 수 있다
새로운 개체 추가하기
4 키-값 코딩을 사용하여 재사용이 가능한 객체 만들기
5 원격 데이터베이스: 모든 것을 넷(Net)으로!
맺음말
7장 코어 데이터와 Three20을 이용한 애플리케이션 이메일 기능
1 간단한 오프라인 SMTP 클라이언트
2 사용자 인터페이스 만들기
Xcode 주물러보기
OfflineMailerAppDelegateh에 있는 인스턴스 변수 설정
UIApplication 델리게이트 초기화
3 코어 데이터로 작업하기
코어 데이터 스택의 이해
Three20 추가하기
4 사용자 인터페이스를 이용한 여행
5 DataManager로 최상위 레벨 데이터 관리하기
6 Three20와 TTMessageController에 대한 고찰
7 메시지 작성과 전송
8 코어 데이터 모델 만들기
9 스레드 방식의 메시지 전송을 위한 SKPSMTPMessage 해킹
10 SKPSMTPMessage의 NSRunLoop 설정
11 온라인 모드로 돌아가기
맺음말
8장 iTap은 네트워크 문제들을 어떻게 해결했을까?
1 iTap과 iTap 리시버
iTap
iTap 리시버
2 iTap에 대한 아이디어는 어떻게 나오게 되었고 또 진화해 왔는가?
3 주요 문제들
아이폰에는 물리적 버튼이 없다
서드-파티 어플리케이션은 USB나 블루투스를 사용할 수 없다
맥과 PC 모두 지원하기
컴퓨터와 디바이스 간의 사용자 친화적인 자동 검색 기능
4 프로그래머가 바라본 아이폰의 와이파이 네트워킹
예제 코드에 관하여
소켓의 소개
소켓 생성
CFSocket을 이용한 네트워크 이벤트 처리
네트워크 설정값 얻어오기
네트워크 상의 모든 기기와의 통신
와이파이 사용 가능 여부 확인하기
파워 관리 규칙 준수
5 iTap의 네트워크 서브시스템
Bonjour를 사용할 것인가, 사용하지 않을 것인가
알림 메시지를 이용한 컴포넌트 간의 통신
직접 만든 자동검색 기능
맺음말
9장 반응성 향상을 위한 팁과 트릭
1 AAPLot으로 주식 가격에 대한 기록 도표 만들기
실행할 때마다 데이터 저장하기
Plists를 이용한 데이터 영구 저장
아이폰 어플리케이션 샌드박스에 데이터 저장하기
2 AAPlot에 임시 데이터 뿌리기
3 여러 개의 주식 그래프 보여주기 : Stockplot
4 동시 수행
NSOperation, NSOperationQueue 그리고 블록
Plausible Blocks 컴파일러 설치하고 프로젝트에 추가하기
StockPlot에서 블록, NSOperation, NSOperationQueue 사용하기
5 효율적으로 많은 양의 데이터 보여주기
UIScrollView 확대/축소
UIScrollView 확대/축소의 비밀
6 확대/축소 후에 UIScrollView 해상도 재설정
7 오프-스크린 컨텍스트에 그리기
8 관찰, 팁 그리고 트릭
맺음말
10장 애플 푸쉬 알림 서비스를 이용하는 클라이언트 만들기애플의 푸쉬 알림 서비스를 파헤치다
1 애플의 푸쉬 알림 서비스란 무엇인가?
2 당신에게 필요한 것
3 1단계: 클라이언트 생성
애플리케이션 델리게이트
수신되는 알림 메시지 처리
소리
빌드와 실행! 이런, 그렇게 빠르진 않군…
4 2단계: 인증서 만들기
프로그램 포탈 과정 실습
포털로 돌아와서
코드 사이닝에 모바일 프로비저닝 파일 넣기
5 3단계: 서버 설정
스크립트에 대한 고찰
서버 파일 내려 받기
6 마무리 작업
클라이언트 연결하기
7 추가 고려 사항/고급 주제
피드백 서버
SSL 서버 연결
개발 샌드박스에서 실제 제품으로 이동
개발 버전 vs 특별 배포 버전
모바일 프로비저닝 파일
디버깅
사용자 경험
오픈 소스 코드
제공되는 솔루션
맺음말
11장 생동감 있는 그래픽 효과를 만드는 OpenGL ES 기법OpenGL ES 기법
1 시작
2 1단계: OpenGL 라이팅
3 환경 매핑으로 눈길을 돌리다
4 구 환경 매핑 구현
5 환경 매핑과 확산 텍스처의 결합
각 픽셀의 반사
아이폰 3GS
맺음말
1 파티클로 게임에 생기를 불어 넣기
2 아이폰에 맞는 파티클 시스템
예제 코드 살펴보기
게임의 기본 흐름
파티클 시스템의 해부
파티클 만들기!
퇴화된 삼각형
코드로 돌아가자
랜덤 숫자와 초기 조건
파티클의 분출
3 파티클 시스템 트윅
포스가 파티클과 함께 하기를
4 놀랍고 화려한 꿈의 파티클
보간법
색이 변하는 파티클
맺음말
2장 인터넷으로 하는 체스: Deep Green으로 즐기는 메시지 통신 게임
1 Deep Green은 이미 인기 있는 게임이다
2 해야 할 일들
친구를 게임에 초대하기
초대 수락하기
체스 말 움직이기
알림 메시지 받기
3 소중한 자산과도 같은 도구들
4 이야기는 그만, 코딩의 시작!
도구들 설치하기
웹 서비스 코딩하기
디바이스에서의 작업
체스 말 움직이기
맺음말
3장 오디오 스트리밍: 코어 오디오 탐험
1 여보게, 나는 음원을 재생할 수 있는 애플리케이션을 개발할 수 있다네…
2 MPMoviePlayerController: 참 쉽군요!
3 더 나은 방법을 찾아서
시스템 사운드를 이용하는 방법
AVAudioPlayer: 베타 버전에는 없는 방법
4 코어 오디오를 가지고 카우보이처럼 해결하는 방법
이제 절반까지 도달한 것일세: 오디오 큐 서비스
조금만 힘을 내면 목표 지점이다: 오디오 파일 스트림 서비스
5 애플리케이션에 모든 것을 집어 넣자
한 가지 더
6 실행!
7 아이폰 3.0과 이후 작업
맺음말
4장 당장 버그를 때려잡자! 아이폰에서 디버깅하기
1 전제 조건
2 Objective-C vs C/C++
3 당신이 코드를 작성하는 사이에
커스텀 Asserts
커스텀 로깅
#define 사용하기
4 크래쉬!
테스터로부터 크래쉬 로그 받기
우리는 dSYM 파일들을 보관하고 있습니다 확실합니까?
크래쉬 로그를 심볼화하기
atos 사용하기
5 재현이 어려운 크래쉬들을 재현하는 방법
스레드
시스템
레이스 컨디션
6 디버깅의 과학적인 접근방법
가설을 세운다
가설을 위한 검증 절차 계획하기
가설을 증명하거나 혹은 부정하거나
크래쉬의 발생 확률 높이기
7 콜 스택 정보를 갖고 있다. 그러나…
코드의 시작
메모리 깨짐이란 무엇인가?
메모리 깨짐 확인하기
메모리 문제 감지도구
변수값 보기
링크 맵 파일
맺음말
5장 잠깐 기다려봐!: SQLite로 데이터 기반 애플리케이션 만들기
1 지름길로 가기 위해 절벽에서 점프하다(왜 이런 선택을 하게 되었는가)
2 아이폰 앱 개발을 시작한 이유
3 아이폰의 데이터 기반 애플리케이션
4 액티브 레코드: 데이터에 접근하는 간단한 방법
5 C API를 감싸는 데이터베이스 랩퍼: ISDatabase
예제 프로젝트 셋업
데이터베이스 생성과 초기화
데이터베이스에 연결하기
간단한 요청 생성
6 고급 SQL
중복된 Create 구문 방지하기
파라미터 처리
리펙토링과 정리
여러 Statement 구문을 트랜잭션 단위로 그룹화하기
7 간단한 액티브 레코드 레이어 작성: ISModel
데이터베이스 연결 유지하기
모델 객체: Grocery 아이템
Grocery들이 매핑되는 방법
저장
갱신
삭제
식료품 아이템 찾기
모든 것들을 한 자리에
8 간단한 마이그레이션
9 다른 구현 방법
맺음말
6장 코어 데이터와 하드코어 디자인
1 코어 데이터의 역사?
손님은 왕이다
2 첫 번째 코어 데이터 어플리케이션
첫째, 코드를 훔쳐라(음악이 아니라!)
모든 객체에 대한 뷰
첫 크래쉬거나 아니거나!
3 아이폰 OS를 위한 코어 데이터 개발 설명서: 모델 마이그레이션 관리
간단하게 마이그레이션을 할 수 있다
새로운 개체 추가하기
4 키-값 코딩을 사용하여 재사용이 가능한 객체 만들기
5 원격 데이터베이스: 모든 것을 넷(Net)으로!
맺음말
7장 코어 데이터와 Three20을 이용한 애플리케이션 이메일 기능
1 간단한 오프라인 SMTP 클라이언트
2 사용자 인터페이스 만들기
Xcode 주물러보기
OfflineMailerAppDelegateh에 있는 인스턴스 변수 설정
UIApplication 델리게이트 초기화
3 코어 데이터로 작업하기
코어 데이터 스택의 이해
Three20 추가하기
4 사용자 인터페이스를 이용한 여행
5 DataManager로 최상위 레벨 데이터 관리하기
6 Three20와 TTMessageController에 대한 고찰
7 메시지 작성과 전송
8 코어 데이터 모델 만들기
9 스레드 방식의 메시지 전송을 위한 SKPSMTPMessage 해킹
10 SKPSMTPMessage의 NSRunLoop 설정
11 온라인 모드로 돌아가기
맺음말
8장 iTap은 네트워크 문제들을 어떻게 해결했을까?
1 iTap과 iTap 리시버
iTap
iTap 리시버
2 iTap에 대한 아이디어는 어떻게 나오게 되었고 또 진화해 왔는가?
3 주요 문제들
아이폰에는 물리적 버튼이 없다
서드-파티 어플리케이션은 USB나 블루투스를 사용할 수 없다
맥과 PC 모두 지원하기
컴퓨터와 디바이스 간의 사용자 친화적인 자동 검색 기능
4 프로그래머가 바라본 아이폰의 와이파이 네트워킹
예제 코드에 관하여
소켓의 소개
소켓 생성
CFSocket을 이용한 네트워크 이벤트 처리
네트워크 설정값 얻어오기
네트워크 상의 모든 기기와의 통신
와이파이 사용 가능 여부 확인하기
파워 관리 규칙 준수
5 iTap의 네트워크 서브시스템
Bonjour를 사용할 것인가, 사용하지 않을 것인가
알림 메시지를 이용한 컴포넌트 간의 통신
직접 만든 자동검색 기능
맺음말
9장 반응성 향상을 위한 팁과 트릭
1 AAPLot으로 주식 가격에 대한 기록 도표 만들기
실행할 때마다 데이터 저장하기
Plists를 이용한 데이터 영구 저장
아이폰 어플리케이션 샌드박스에 데이터 저장하기
2 AAPlot에 임시 데이터 뿌리기
3 여러 개의 주식 그래프 보여주기 : Stockplot
4 동시 수행
NSOperation, NSOperationQueue 그리고 블록
Plausible Blocks 컴파일러 설치하고 프로젝트에 추가하기
StockPlot에서 블록, NSOperation, NSOperationQueue 사용하기
5 효율적으로 많은 양의 데이터 보여주기
UIScrollView 확대/축소
UIScrollView 확대/축소의 비밀
6 확대/축소 후에 UIScrollView 해상도 재설정
7 오프-스크린 컨텍스트에 그리기
8 관찰, 팁 그리고 트릭
맺음말
10장 애플 푸쉬 알림 서비스를 이용하는 클라이언트 만들기애플의 푸쉬 알림 서비스를 파헤치다
1 애플의 푸쉬 알림 서비스란 무엇인가?
2 당신에게 필요한 것
3 1단계: 클라이언트 생성
애플리케이션 델리게이트
수신되는 알림 메시지 처리
소리
빌드와 실행! 이런, 그렇게 빠르진 않군…
4 2단계: 인증서 만들기
프로그램 포탈 과정 실습
포털로 돌아와서
코드 사이닝에 모바일 프로비저닝 파일 넣기
5 3단계: 서버 설정
스크립트에 대한 고찰
서버 파일 내려 받기
6 마무리 작업
클라이언트 연결하기
7 추가 고려 사항/고급 주제
피드백 서버
SSL 서버 연결
개발 샌드박스에서 실제 제품으로 이동
개발 버전 vs 특별 배포 버전
모바일 프로비저닝 파일
디버깅
사용자 경험
오픈 소스 코드
제공되는 솔루션
맺음말
11장 생동감 있는 그래픽 효과를 만드는 OpenGL ES 기법OpenGL ES 기법
1 시작
2 1단계: OpenGL 라이팅
3 환경 매핑으로 눈길을 돌리다
4 구 환경 매핑 구현
5 환경 매핑과 확산 텍스처의 결합
각 픽셀의 반사
아이폰 3GS
맺음말