목차

역자서문

서문

감사의 말

 

1장. 코코아란 무엇인가

작은 역사
개발 도구
언어
객체, 클래스, 메서드 그리고 메시지
프레임워크
이 책을 어떻게 읽을 것인가?
표기법
일반적인 실수
어떻게 배울 것인가?

 

2장. 시작해보자!

Xcode에서
새 프로젝트 생성하기
main 함수
인터페이스 빌더에서
표준 팔레트
빈 윈도우
인터페이스 레이아웃
독 윈도우
클래스 만들기
인스턴스 만들기
연결하기
Xcode로 되돌아와서
Objective-C의 타입과 상수
헤더 파일에는 뭐가 들어 있나?
구현 파일 편집하기
빌드하고 실행하기
awakeFromNib
문서
지금까지 배운 것

 

3장. Objective-C

인스턴스를 생성하고 사용하기
기존의 클래스들을 사용하기
메모리 관리- 소유횟수, 해제하기, 소유하기
nil에 메시지 보내기
NSObject, NSArray, NSMutableArray, NSString
‘~을 상속하다’ vs ‘~을 사용하다’ 혹은 ‘~에 대해 알고 있다’
나만의 클래스 만들기
LotteryEntry 클래스 작성하기
main.m 바꾸기
description 메서드 구현하기
초기화 메서드 작성하기
인수가 있는 초기화 메서드
디버거
지금까지 배운 것
더 파고들기 – 메시지는 어떻게 동작하나?
문제

 

4장 컨트롤

일반적인 NSControl의 서브클래스
NSButton
NSSlider
NSTextField
SpeakLine 예제 시작
nib 파일 레이아웃
인터페이스 빌더에서 연결하기
AppController 클래스 구현하기
기존 사용자 인터페이스 확장
더 파고들기 – 프로그램에서 타겟을 설정하기
문제

 

5장 도우미 객체

델리게이트
NSTableView와 그 dataSource
AppController 인터페이스 파일
사용자 인터페이스 레이아웃
연결하기
AppController.m 편집하기
델리게이트를 구현할 때 발생하는 일반적인 오류
델리게이트를 가지는 객체들
소유 순환
더 파고들기 –  델리게이트는 어떻게 동작하나?
문제

 

6장. 바인딩과 NSController

RaisMan 애플리케이션 시작하기
키-값 코딩
인터페이스 빌더에서
키-값 코딩과 nil
정렬 추가
더 파고들기 – NSArrayController 없이 정렬하기
더 파고들기 – 키 경로
문제 1
문제 2

 

7장. NSUndoManager

NSInvocation
NSUndoManager는 어떻게 동작할까?
RaiseMan에 취소하기 추가
키-값 옵저빙
편집을 취소하기
더 파고들기 – 윈도우와 취소하기 관리자

 

8장. 아카이브

NSCoder와 NSCoding
인코딩
디코딩
도큐먼트 아키텍처
Info.plist와 NSDocumentController
NSDocument
NSWindowController
저장하기와 NSKeyedArchiver
불러오기와 NSKeyedUnarchiver
파일 유형에 맞는 확장자와 아이콘 설정하기
더 파고들기 – 무한 루프 방지
더 파고들기 – 버전 관리
더 파고들기 – 프로토콜 만들기
더 파고들기 – 취소 기능이 없는 도큐먼트 기반 애플리케이션

 

9장 nib 파일과 NSWindowController

NSPanel
애플리케이션에 패널을 추가하기
MainMenu.nib
메뉴 항목 설정
AppController.m
Preferences.nib
PreferenceController.m
더 파고들기 – NSBundle
문제 1
문제 2

 

10장 사용자 기본설정

NSDictionary와 NSMutableDictionary
NSDictionary
NSMutableDictionary
NSUserDefaults
유형이 다른 기본설정의 우선순위
애플리케이션 식별자 지정하기
기본설정 이름의 키 만들기
기본설정 등록하기
사용자가 기본설정을 편집할 수 있도록 하기
기본설정 사용하기
제목 없는 도큐먼트의 생성 막기
테이블 뷰에서 배경색 정하기
더 파고들기 – 명령행에서 기본설정 읽어오고 쓰기
문제

 

11장. 노티피케이션 사용하기

노티피케이션이란 무엇인가
노티피케이션이 아닌 것?
NSNotification
NSNotificationCenter
노티피케이션 알리기
옵저버 등록하기
옵저버 등록 해제하기
도착한 노티피케이션 다루기
더 파고들기 – 델리게이트와 노티피케이션
더 파고들기 – 사용자 정보 딕셔너리
문제 1
문제 2

 

12장. 경고 패널 사용하기

사용자에게 삭제 여부 확인하기
문제

 

13장. 지역화

Nib 파일의 지역화
문자열 표
문자열 표 생성하기
문자열 표 사용하기
더 파고들기 – nibtool
더 파고들기 – 형식 문자열에서 토큰의 명확한 순서 정하기

 

14장. 커스텀 뷰

뷰의 계층
뷰에 그리기
뷰 서브클래스의 인스턴스 생성하기
크기 정보
drawRect:
NSBezierPath로 그리기
NSScrollView
더 파고들기 – 셀
더 파고들기 – isFlipped
문제

 

15장. 이미지와 마우스 이벤트

NSResponder
NSEvent
마우스 이벤트 얻기
NSOpenPanel 사용하기
Nib 파일 바꾸기
awakeFromNib VS init
코드 편집하기
여러분의 뷰에 이미지 합치기
뷰의 좌표계
자동 스크롤
더 파고들기 – NSImage
문제

 

16장 리스폰더와 키보드 이벤트

NSResponder
NSEvent
사용자 뷰로 새로운 프로젝트 생성하기
Nib 파일 수정하기
코드 작성하기
더 파고들기 – 롤오버

 

17장. 서체와 NSAttributedString

NSFont
NSFont에서 자주 사용되는 메서드
NSAttributedString
문자열과 속성이 부여된 문자열 그리기
문자가 나타나도록 만들기
뷰를 PDF로 저장하기
더 파고들기 – NSFontManager
문제 1
문제 2

 

18장. 페이스트보드와 Nil-Targeted 액션

NSPasteboard
BigLetterView에 잘라내기, 복사하기, 붙여넣기를 추가
Nil-Targeted 액션
Nib 파일 들여다보기
더 파고들기- 어떤 객체가 액션 메시지를 실제로 보낼까?
더 파고들기- 느린 복사
문제

 

19장. 카테고리

NSString에 메서드 추가하기
더 파고들기- 비공개 메서드 사용하기

 

20장. 드래그-앤-드롭

BigLetterView를 드래그 출발지로 만들기
드롭한 후에
BigLetterView를 드래그 목적지로 만들기
registerForDraggedTypes
하이라이팅 추가하기
드래그 목적지 메서드 구현하기
테스트

 

21장. NSTimer

인터페이스 레이아웃
연결 만들기
AppController에 코드 추가하기
더 파고들기 – NSRunLoop
문제

 

22장. 시트

시트 추가하기
아웃렛과 액션 추가하기
인터페이스 레이아웃
코드 추가하기
더 파고들기 – 컨텍스트 정보
더 파고들기 – 모달 윈도우
더 파고들기 – 경고 시트
더 파고들기 – NSDrawer
문제

 

23장. NSFormatters 만들기

기본 포매터
AppController 클래스의 인터페이스 파일 편집하기
Nib 파일 편집하기
NSColorList
부분 문자열에 대한 문자열 검색하기
NSFormatter의 서브클래스 생성하기
NSControl의 델리게이트
부분 문자열 검사하기
속성이 부여된 문자열을 리턴하는 포매터
문제

 

24장. 인쇄

타자 연습 애플리케이션에 인쇄 기능 추가하기
페이지 매김
더 파고들기 – 화면에 그릴 수 있나?
ObjectAlloc 사용하기
문제

 

25장. 메뉴 업데이트

BigLetterView를 복사하지 못하도록 만들기
더 파고들기 – 메뉴 델리게이트

 

26장. NSTextView로 작업하기

NSTextView
전송될 델리게이트 메시지
이 책에 사용한 편집기 만들기
텍스트 파일 읽기, 쓰기, 편집하기
상황에 따라 변하는 메뉴 추가하기
선택한 문자열 교체하기
더 파고들기 – 필드 편집기
문제

 

27장. 인터페이스 빌더의 팔레트 생성

BigLetterView에 NSCoding 메서드 추가하기
팔레트 프로젝트 생성하기
팔레트용 Nib 파일 편집하기
palette.table
빌드와 테스트
finishInstantiate
인스펙터 추가하기
인스펙터용 Nib 파일 생성하기
인스펙터 코드 작성하기
커스텀 뷰 바인딩 추가하기
더 파고들기- 뷰가 아닌 객체를 어떻게 팔레트로 만들까
문제

 

28장. 애플스크립트

애플리케이션에 애플스크립트 지원 넣기
Plists 생성하기
애플 이벤트 다루기

 

29장. 코코아와 OpenGL

간단한 코코아/OpenGL 애플리케이션

 

30장. 프레임워크 만들기

프레임워크 만들기
애플리케이션에 프레임워크 내장하기
애플리케이션에 내장하기 위해 프레임워크 컴파일하기
프레임워크와 함께 애플리케이션 컴파일하기
프리바인딩(Prebinding)
Zero-Link

 

31장. GNUstep

GNUstep 애플리케이션을 실행할 시스템 생성하기
개발 도구들의 빌드와 실행
GNUstep으로 RandomApp 만들기

 

32장. 마치며

 

찾아보기