옮긴이의 글
서문
감사의 말
1장. 코코아, 그게 뭐야?
작은 역사
개발 도구
언어
객체, 클래스, 메서드, 메시지
프레임워크
이 책을 어떻게 읽을 것인가?
이 책의 표기법
일반적인 실수
어떻게 배울 것인가?
2장. 시작해보자!
Xcode에서
새 프로젝트 생성하기
main 함수
인터페이스 빌더에서
라이브러리 윈도
빈 윈도
인터페이스 레이아웃
독 윈도
클래스 만들기
인스턴스 만들기
객체 연결하기
Xcode로 되돌아와서
Objective-C의 타입과 상수
헤더 파일에는 뭐가 들어 있나
구현 파일 편집하기
빌드하고 실행하기
awakeFromNib
문서
지금까지 배운 내용
3장. Objective-C
인스턴스를 생성하고 사용하기
기존 클래스들을 사용하기
nil에 메시지 보내기
NSObject, NSArray, NSMutableArray, NSString
‘~을 상속하다’ vs ‘~을 사용하다’ 혹은 ‘~에 대해 알고 있다’
나만의 클래스 만들기
LotteryEntry 클래스 작성하기
lottery.m 바꾸기
description 메서드 구현하기
초기화 메서드 작성하기
인수가 있는 초기화 메서드
디버거
정리하기
더 파고들기 - 메시지는 어떻게 동작하나?
문제
4장 메모리 관리
가비지 컬렉터를 켜거나 끄고 빌드하기
가비지 컬렉터와 함께하기
참조 수와 함께하기
dealloc 구현하기
자동으로 해제되는 객체 - 오토릴리스 객체 만들기
접근자 메서드
무엇을 했나?
5장 타깃/액션
일반적인 NSControl의 서브클래스
NSButton
NSSlider
NSTextField
SpeakLine 예제 시작하기
nib 파일 레이아웃
인터페이스 빌더에서 연결하기
NSWindow의 initialFirstResponder 아웃렛
AppController 클래스 구현하기
더 파고들기 - 코드를 작성하여 타깃 설정하기
문제
디버깅 힌트
6장 도우미 객체
델리게이트
NSTableView와 그 dataSource
사용자 인터페이스 레이아웃
연결하기
AppController.m 편집하기
델리게이트를 구현할 때 발생하는 일반적인 오류
델리게이트를 가지는 객체들
더 파고들기 - 델리게이트는 어떻게 동작하나?
문제 - 델리게이트 만들기
문제 - 데이터 소스 만들기
7장 키-밸류 코딩, 키-밸류 옵저빙
키-밸류 코딩
바인딩
키-밸류 옵저빙
키를 관찰할 수 있도록 만들기
프로퍼티와 속성
@property와 @synthesize
프로퍼티의 속성
더 파고들기 - 키 경로
더 파고들기 - 키-밸류 옵저빙
8장 NSArrayController
RaiseMan 애플리케이션 시작하기
Xcode에서
인터페이스 빌더에서
키-밸류 코딩과 nil
정렬 추가하기
더 파고들기 - NSArrayController 없이 정렬하기
문제 1
문제 2
9장 NSUndoManager
NSInvocation
NSUndoManager는 어떻게 동작할까?
RaiseMan에 취소하기 기능 추가하기
키-밸류 옵저빙
내용 편집에 대한 취소하기 기능
추가할 때 편집 시작하기
더 파고들기 - 윈도와 취소하기 관리자
10장 아카이브
NSCoder와 NSCoding
인코딩
디코딩
도큐먼트 아키텍처
Info.plist와 NSDocumentController
NSDocument
NSWindowController
저장하기와 NSKeyedArchiver
불러오기와 NSKeyedUnarchiver
파일 유형에 맞는 확장자와 아이콘 설정하기
더 파고들기 - 무한 루프 방지
더 파고들기 - 프로토콜 만들기
더 파고들기 - 취소 기능이 없는 도큐먼트 기반 애플리케이션
Universal Type Identifier
11장. 코어 데이터 기초
NSManagedObjectModel
인터페이스
뷰를 생성하고 설정하기
객체 연결과 바인딩
코어 데이터는 어떻게 동작할까?
12장 nib 파일과 NSWindowController
NSPanel
애플리케이션에 패널을 추가하기
메뉴 항목 설정하기
AppController.m
Preferences.nib
PreferenceController.m
더 파고들기 - NSBundle
문제
13장 사용자 기본설정
NSDictionary와 NSMutableDictionary
NSDictionary
NSMutableDictionary
NSUserDefaults
유형이 다른 기본설정의 우선순위
애플리케이션 식별자 지정하기
기본설정 이름의 키 만들기
기본설정 등록하기
사용자가 기본설정을 편집할 수 있도록 하기
기본설정 사용하기
제목 없는 도큐먼트의 생성 막기
테이블 뷰에서 배경색 정하기
더 파고들기 - NSUserDefaultsController 더 파고들기 - 명령행에서 기본설정 읽어 오고 쓰기
문제
14장 노티피케이션 사용하기
노티피케이션이란 무엇인가
노티피케이션이 아닌 것?
NSNotification과 NSNotificationCenter
노티피케이션 알리기
옵저버 등록하기
도착한 노티피케이션 다루기
userInfo 딕셔너리
더 파고들기 - 델리게이트와 노티피케이션
문제
15장 경고 패널 사용하기
사용자에게 삭제 여부 확인하기
문제
16장 지역화
Nib 파일 지역화하기
문자열 표
문자열 표 만들기
문자열 표 사용하기
더 파고들기- ibtool
더 파고들기- 형식 문자열에서 토큰의 명확한 순서 정하기
17장 커스텀 뷰
뷰의 계층
뷰에 그리기
뷰 서브클래스의 인스턴스 생성하기
윈도 크기에 대해서
drawRect:
NSBezierPath로 그리기
NSScrollView
인터페이스 빌더 없이 뷰 생성하기
더 파고들기 - 셀
더 파고들기 - isFlipped
문제
18장 이미지와 마우스 이벤트
NSResponder
NSEvent
마우스 이벤트 얻기
NSOpenPanel 사용하기
NIB 파일 바꾸기
코드 편집하기
여러분의 뷰에 이미지 합치기
뷰의 좌표계
자동 스크롤
더 파고들기 - NSImage
문제
19장 키보드 이벤트
NSResponder
NSEvent
사용자 뷰로 새로운 프로젝트 생성하기
인터페이스 레이아웃
연결 설정하기
코드 작성하기
BigLetterView.h
BigLetterView.m
더 파고들기 - 롤오버
흐릿한 파란 상자
20장 속성이 있는 문자열 그리기
NSFont
NSAttributedString
문자열과 속성이 부여된 문자열 그리기
문자가 나타나도록 만들기
뷰를 PDF로 저장하기
더 파고들기 - NSFontManager
문제 1
문제 2
21장 페이스트보드와 Nil-Targeted 액션
NSPasteboard
BigLetterView에 잘라내기, 복사하기, 붙여넣기를 추가하기
Nil-Targeted 액션
어떻게 리스폰더 체인을 검색할까?
Nib 파일 들여다보기
더 파고들기- 어떤 객체가 액션 메시지를 실제로 보낼까?
더 파고들기- 느린 복사
문제 1
문제 2
22장 카테고리
NSString에 메서드 추가하기
더 파고들기- 비공개 메서드 사용하기
더 파고 들기 - 인포멀 프로토콜 선언하기
23장 드래그 & 드롭
BigLetterView를 드래그 출발지로 만들기
BigLetterView를 드래그 목적지로 만들기
registerForDraggedTypes
하이라이팅 추가하기
드래그 목적지 메서드 구현하기
테스트하기
더 파고들기 - 드래그 연산 마스킹하기
24장 NSTimer
인터페이스 레이아웃
연결 만들기
AppController에 코드 추가하기
더 파고들기 - NSRunLoop
문제
25장 시트
시트 추가하기
아웃렛과 액션 추가하기
인터페이스 레이아웃
코드 추가하기
더 파고들기 - 콘텍스트 정보
더 파고들기 - 모달 윈도
26장 NSFormatter 만들기
기본 포매터
ColorFormatter.h 생성하기
Nib 파일 편집하기
NSColorList
부문 문자열에 대한 문자열 검색하기
기본 포매터 메서드들 구현하기
NSControl의 델리게이트
부분 문자열 검사하기
속성이 부여된 문자열을 리턴하는 포매터
27장 인쇄
페이지 매김
더 파고들기 - 내가 화면에도 그릴 수 있나?
문제
28장 웹 서비스
AmaZone
인터페이스 레이아웃
코드 작성하기
문제 - WebView 추가하기
29장 뷰 전환
디자인
시작하기
ManagedViewController 클래스 생성하기
ViewControllers와 이들의 NIB 파일들을 생성하기
뷰 전환을 MyDocument에 추가하기
윈도 크기 변경하기
30장 코어 데이터 관계
데이터 모델 편집하기
커스텀 NSManagedObject 클래스 생성하기
직원 - Employee
부서 - Department
인터페이스 레이아웃
DepartmentView.nibx
EmployeeView.nib
이벤트와 nextResponder
31장 가비지 컬렉션
객체가 아닌 데이터 형
C 원형
코어 파운데이션
Polynomial 예제
인스투르먼츠
더 파고들기 - 약한 참조
문제 - 나쁜 짓 하기
32장 코어 애니메이션(Core Animation)
CALyer 생성하기
CALayer와 CAAnimation 사용하기
다항식 제거하기
많은 레이어를 동시에 움직이기
레이어 크기를 변경하고 다시 그리기
CALayer
33장 간단한 코코아/OpenGL 애플리케이션
NSOpenGLView 사용하기
애플리케이션 작성하기
인터페이스 레이아웃
코드 작성하기
34장 NSTask
멀티스레딩 vs 멀티프로세싱
ZIPspector
비동기 읽기
iPing
문제 - .tar과 .tgz 파일들
35장 마치며
문제
부록 가 Hello, iPhone!
부록 나 맥 개발자, 아이폰 입문하기
찾아보기
서문
감사의 말
1장. 코코아, 그게 뭐야?
작은 역사
개발 도구
언어
객체, 클래스, 메서드, 메시지
프레임워크
이 책을 어떻게 읽을 것인가?
이 책의 표기법
일반적인 실수
어떻게 배울 것인가?
2장. 시작해보자!
Xcode에서
새 프로젝트 생성하기
main 함수
인터페이스 빌더에서
라이브러리 윈도
빈 윈도
인터페이스 레이아웃
독 윈도
클래스 만들기
인스턴스 만들기
객체 연결하기
Xcode로 되돌아와서
Objective-C의 타입과 상수
헤더 파일에는 뭐가 들어 있나
구현 파일 편집하기
빌드하고 실행하기
awakeFromNib
문서
지금까지 배운 내용
3장. Objective-C
인스턴스를 생성하고 사용하기
기존 클래스들을 사용하기
nil에 메시지 보내기
NSObject, NSArray, NSMutableArray, NSString
‘~을 상속하다’ vs ‘~을 사용하다’ 혹은 ‘~에 대해 알고 있다’
나만의 클래스 만들기
LotteryEntry 클래스 작성하기
lottery.m 바꾸기
description 메서드 구현하기
초기화 메서드 작성하기
인수가 있는 초기화 메서드
디버거
정리하기
더 파고들기 - 메시지는 어떻게 동작하나?
문제
4장 메모리 관리
가비지 컬렉터를 켜거나 끄고 빌드하기
가비지 컬렉터와 함께하기
참조 수와 함께하기
dealloc 구현하기
자동으로 해제되는 객체 - 오토릴리스 객체 만들기
접근자 메서드
무엇을 했나?
5장 타깃/액션
일반적인 NSControl의 서브클래스
NSButton
NSSlider
NSTextField
SpeakLine 예제 시작하기
nib 파일 레이아웃
인터페이스 빌더에서 연결하기
NSWindow의 initialFirstResponder 아웃렛
AppController 클래스 구현하기
더 파고들기 - 코드를 작성하여 타깃 설정하기
문제
디버깅 힌트
6장 도우미 객체
델리게이트
NSTableView와 그 dataSource
사용자 인터페이스 레이아웃
연결하기
AppController.m 편집하기
델리게이트를 구현할 때 발생하는 일반적인 오류
델리게이트를 가지는 객체들
더 파고들기 - 델리게이트는 어떻게 동작하나?
문제 - 델리게이트 만들기
문제 - 데이터 소스 만들기
7장 키-밸류 코딩, 키-밸류 옵저빙
키-밸류 코딩
바인딩
키-밸류 옵저빙
키를 관찰할 수 있도록 만들기
프로퍼티와 속성
@property와 @synthesize
프로퍼티의 속성
더 파고들기 - 키 경로
더 파고들기 - 키-밸류 옵저빙
8장 NSArrayController
RaiseMan 애플리케이션 시작하기
Xcode에서
인터페이스 빌더에서
키-밸류 코딩과 nil
정렬 추가하기
더 파고들기 - NSArrayController 없이 정렬하기
문제 1
문제 2
9장 NSUndoManager
NSInvocation
NSUndoManager는 어떻게 동작할까?
RaiseMan에 취소하기 기능 추가하기
키-밸류 옵저빙
내용 편집에 대한 취소하기 기능
추가할 때 편집 시작하기
더 파고들기 - 윈도와 취소하기 관리자
10장 아카이브
NSCoder와 NSCoding
인코딩
디코딩
도큐먼트 아키텍처
Info.plist와 NSDocumentController
NSDocument
NSWindowController
저장하기와 NSKeyedArchiver
불러오기와 NSKeyedUnarchiver
파일 유형에 맞는 확장자와 아이콘 설정하기
더 파고들기 - 무한 루프 방지
더 파고들기 - 프로토콜 만들기
더 파고들기 - 취소 기능이 없는 도큐먼트 기반 애플리케이션
Universal Type Identifier
11장. 코어 데이터 기초
NSManagedObjectModel
인터페이스
뷰를 생성하고 설정하기
객체 연결과 바인딩
코어 데이터는 어떻게 동작할까?
12장 nib 파일과 NSWindowController
NSPanel
애플리케이션에 패널을 추가하기
메뉴 항목 설정하기
AppController.m
Preferences.nib
PreferenceController.m
더 파고들기 - NSBundle
문제
13장 사용자 기본설정
NSDictionary와 NSMutableDictionary
NSDictionary
NSMutableDictionary
NSUserDefaults
유형이 다른 기본설정의 우선순위
애플리케이션 식별자 지정하기
기본설정 이름의 키 만들기
기본설정 등록하기
사용자가 기본설정을 편집할 수 있도록 하기
기본설정 사용하기
제목 없는 도큐먼트의 생성 막기
테이블 뷰에서 배경색 정하기
더 파고들기 - NSUserDefaultsController 더 파고들기 - 명령행에서 기본설정 읽어 오고 쓰기
문제
14장 노티피케이션 사용하기
노티피케이션이란 무엇인가
노티피케이션이 아닌 것?
NSNotification과 NSNotificationCenter
노티피케이션 알리기
옵저버 등록하기
도착한 노티피케이션 다루기
userInfo 딕셔너리
더 파고들기 - 델리게이트와 노티피케이션
문제
15장 경고 패널 사용하기
사용자에게 삭제 여부 확인하기
문제
16장 지역화
Nib 파일 지역화하기
문자열 표
문자열 표 만들기
문자열 표 사용하기
더 파고들기- ibtool
더 파고들기- 형식 문자열에서 토큰의 명확한 순서 정하기
17장 커스텀 뷰
뷰의 계층
뷰에 그리기
뷰 서브클래스의 인스턴스 생성하기
윈도 크기에 대해서
drawRect:
NSBezierPath로 그리기
NSScrollView
인터페이스 빌더 없이 뷰 생성하기
더 파고들기 - 셀
더 파고들기 - isFlipped
문제
18장 이미지와 마우스 이벤트
NSResponder
NSEvent
마우스 이벤트 얻기
NSOpenPanel 사용하기
NIB 파일 바꾸기
코드 편집하기
여러분의 뷰에 이미지 합치기
뷰의 좌표계
자동 스크롤
더 파고들기 - NSImage
문제
19장 키보드 이벤트
NSResponder
NSEvent
사용자 뷰로 새로운 프로젝트 생성하기
인터페이스 레이아웃
연결 설정하기
코드 작성하기
BigLetterView.h
BigLetterView.m
더 파고들기 - 롤오버
흐릿한 파란 상자
20장 속성이 있는 문자열 그리기
NSFont
NSAttributedString
문자열과 속성이 부여된 문자열 그리기
문자가 나타나도록 만들기
뷰를 PDF로 저장하기
더 파고들기 - NSFontManager
문제 1
문제 2
21장 페이스트보드와 Nil-Targeted 액션
NSPasteboard
BigLetterView에 잘라내기, 복사하기, 붙여넣기를 추가하기
Nil-Targeted 액션
어떻게 리스폰더 체인을 검색할까?
Nib 파일 들여다보기
더 파고들기- 어떤 객체가 액션 메시지를 실제로 보낼까?
더 파고들기- 느린 복사
문제 1
문제 2
22장 카테고리
NSString에 메서드 추가하기
더 파고들기- 비공개 메서드 사용하기
더 파고 들기 - 인포멀 프로토콜 선언하기
23장 드래그 & 드롭
BigLetterView를 드래그 출발지로 만들기
BigLetterView를 드래그 목적지로 만들기
registerForDraggedTypes
하이라이팅 추가하기
드래그 목적지 메서드 구현하기
테스트하기
더 파고들기 - 드래그 연산 마스킹하기
24장 NSTimer
인터페이스 레이아웃
연결 만들기
AppController에 코드 추가하기
더 파고들기 - NSRunLoop
문제
25장 시트
시트 추가하기
아웃렛과 액션 추가하기
인터페이스 레이아웃
코드 추가하기
더 파고들기 - 콘텍스트 정보
더 파고들기 - 모달 윈도
26장 NSFormatter 만들기
기본 포매터
ColorFormatter.h 생성하기
Nib 파일 편집하기
NSColorList
부문 문자열에 대한 문자열 검색하기
기본 포매터 메서드들 구현하기
NSControl의 델리게이트
부분 문자열 검사하기
속성이 부여된 문자열을 리턴하는 포매터
27장 인쇄
페이지 매김
더 파고들기 - 내가 화면에도 그릴 수 있나?
문제
28장 웹 서비스
AmaZone
인터페이스 레이아웃
코드 작성하기
문제 - WebView 추가하기
29장 뷰 전환
디자인
시작하기
ManagedViewController 클래스 생성하기
ViewControllers와 이들의 NIB 파일들을 생성하기
뷰 전환을 MyDocument에 추가하기
윈도 크기 변경하기
30장 코어 데이터 관계
데이터 모델 편집하기
커스텀 NSManagedObject 클래스 생성하기
직원 - Employee
부서 - Department
인터페이스 레이아웃
DepartmentView.nibx
EmployeeView.nib
이벤트와 nextResponder
31장 가비지 컬렉션
객체가 아닌 데이터 형
C 원형
코어 파운데이션
Polynomial 예제
인스투르먼츠
더 파고들기 - 약한 참조
문제 - 나쁜 짓 하기
32장 코어 애니메이션(Core Animation)
CALyer 생성하기
CALayer와 CAAnimation 사용하기
다항식 제거하기
많은 레이어를 동시에 움직이기
레이어 크기를 변경하고 다시 그리기
CALayer
33장 간단한 코코아/OpenGL 애플리케이션
NSOpenGLView 사용하기
애플리케이션 작성하기
인터페이스 레이아웃
코드 작성하기
34장 NSTask
멀티스레딩 vs 멀티프로세싱
ZIPspector
비동기 읽기
iPing
문제 - .tar과 .tgz 파일들
35장 마치며
문제
부록 가 Hello, iPhone!
부록 나 맥 개발자, 아이폰 입문하기
찾아보기