목차

옮긴이의 글
서문
감사의 말

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!
부록 나 맥 개발자, 아이폰 입문하기
찾아보기