『프로그래밍 오브젝티브 C 2.0』은 오브젝티브-C 분야의 베스트셀러인 《프로그래밍 오브젝티브-C 2.0》의 개정판으로, LLVM 3.0과 ARC 등이 포함된 새 컴파일러에 맞추어 설명 방식을 대대적으로 수정하였다. 이제 막 프로그래밍 세계에 입문한 개발자도, 예제 애플리케이션을 따라 쉽게 오브젝티브-C를 익힐 수 있도록 도와준다.
저자소개
저자 : 스티븐 코찬 저자 스티븐 코찬은 여러 권의 베스트셀러를 집필 혹은 공동 집필했다. C와 관련하여 『Programming in C』 『Programming in ANSI C』『Topics in C Programming』 등을, 유닉스 책으로는 『Exploring the Unix System』『Unix Shell Programming』 등이 있다. 맥이 처음 출시된 1984년부터 매킨토시 컴퓨터용 프로그램을 개발해 왔으며 Apple Press Library의 일부로 『Programming C for the Mac』을 집필했다. 2003년에 『Programming in Objective-C』를 집필하고 이듬해에 또 다른 맥 관련 저서인 『Beginning AppleScript』도 집필했다.
역자 : 박세현 역자 박세현은 고려대학교 경영학과를 졸업하고 연세대학교 컴퓨터과학과에서 석사학위를 받았다. 맥에 대한 애정으로 개발자가 되어 수년 간 iOS/OS X 앱 개발자로 살아가고 있다. 현재는 안랩에서 전문연구요원으로 복무중이다.
목차
옮긴이의 글
1장 소개 __1.1 이 책에서 배울 거리 __1.2 이 책의 정리 방식 __1.3 지원 __1.4 감사의 글 __1.5 4판 서문
2장 Objective-C로 프로그래밍하기 __2.1 프로그램 컴파일하고 실행하기 __2.1.1 Xcode 사용하기 __2.1.2 터미널 사용하기 __2.2 첫 프로그램 설명하기 __2.3 변수의 값 표시하기 __2.4 요약 __2.5 연습문제
3장 클래스, 객체, 메서드 __3.1 대체 객체가 뭔데? __3.2 인스턴스와 메서드 __3.3 분수를 처리하는 Objective-C 클래스 __3.4 @interface 부분 ______3.4.1 이름 정하기 ______3.4.2 클래스 메서드와 인스턴스 메서드 ______3.4.3 반환 값 ______3.4.4 메서드 인수 __3.5 @implementation 부분 __3.6 program 부분 __3.7 인스턴스 변수 접근과 데이터 캡슐화 __3.8 요약 __3.9 연습문제
4장 데이터 형과 표현식 __4.1 데이터 형과 상수 ______4.1.1 int형 ______4.1.2 float형 ______4.1.3 char형 ______4.1.4 수식어: long, long long, short, unsigned, signed ______4.1.5 id형 __4.2 산술 표현식 ______4.2.1 연산자 우선순위 ______4.2.2 정수 산술과 단항 뺄셈 연산자 ______4.2.3 나머지 연산자 ______4.2.4 정수와 부동소수점 변환 ______4.2.5 형 변환 연산자 __4.3 대입 연산자 __4.4 Calculator 클래스 __4.5 연습문제
5장 프로그램 반복문 __5.1 for 문 ______5.1.1 키보드 입력 ______5.1.2 중첩 for 문 ______5.1.3 for 문 변형 __5.2 while 문 __5.3 do 반복문 __5.4 break 문 __5.5 continue 문 __5.6 요약 __5.7 연습문제
6장 의사결정하기 __6.1 if 문 ______6.1.1 if-else 구문 ______6.1.2 복합 관계 테스트 ______6.1.3 중첩 if 문 ______6.1.4 else if 구문 __6.2 switch 문 __6.3 불리언 변수 __6.4 조건 연산자 __6.5 연습문제
7장 클래스에 대해서 __7.1 인터페이스와 구현 파일 나누기 __7.2 자동 생성 접근자 메서드 __7.3 점 연산자(.)를 사용해 프로퍼티 접근하기 __7.4 메서드에 여러 인수 넘겨주기 ______7.4.1 인수 이름 없는 메서드 ______7.4.2 분수 계산하기 __7.5 지역 변수 ______7.5.1 메서드 인자 ______7.5.2 static 키워드 __7.6 self 키워드 __7.7 메서드에서 객체를 생성하고 반환하기 ______7.7.1 클래스 정의 확장과 인터페이스 파일 __7.8 연습문제
8장 상속 __8.1 모든 것은 루트에서 시작된다 ______8.1.1 알맞은 메서드 찾기 __8.2 상속으로 확장하기 - 새 메서드 추가 ______8.2.1 포인트 클래스와 객체 할당 ______8.2.2 @class 지시어 ______8.2.3 자신의 객체를 소유하는 클래스 __8.3 메서드 재정의하기 ______8.3.1 무슨 메서드가 선택되었을까? __8.4 추상 클래스 __8.5 연습문제
9장 다형성, 동적 타이핑, 동적 바인딩 __9.1 다형성 - 동일한 이름, 다른 클래스 __9.2 동적 바인딩과 id형 __9.3 컴파일 시기와 런타임 확인 __9.4 id 데이터 형과 정적 타이핑 ______9.4.1 동적 타이핑과 인수, 반환 형 __9.5 클래스에 대해 질문하기 __9.6 @try를 사용해 예외 처리하기 __9.7 연습문제
10장 변수와 데이터 형에 대하여 __10.1 객체 초기화하기 __10.2 범위 다시 살펴보기 ______10.2.1 인스턴스 변수의 범위를 조절하는 지시어 ______10.2.2 프로퍼티, 자동 생성 접근자 메서드, 인스턴스 변수에 대하여 ______10.2.3 전역 변수 __10.3 열거 데이터 형 ______10.3.1 정적 변수 __10.4 typedef 명령문 __10.5 데이터 형 변환 ______10.5.1 변환 규칙 __10.6 비트 연산자 ______10.6.1 비트 AND 연산자 ______10.6.2 비트 포함 OR 연산자 ______10.6.3 비트 배타적 OR 연산자 ______10.6.4 1의 보수 연산자 ______10.6.5 왼쪽 시프트 연산자 ______10.6.6 오른쪽 시프트 연산자 __10.7 연습문제
11장 카테고리와 프로토콜 __11.1 카테고리 __11.2 클래스 확장 ______11.2.1 카테고리에 대한 부연 __11.3 프로토콜과 델리게이션 ______11.3.1 델리게이션 ______11.3.2 비공식 프로토콜 __11.4 복합 객체 __11.5 연습문제
12장 전처리기 __12.1 #define 명령문 ______12.1.1 디파인의 고급 형태 __12.2 #import 명령문 __12.3 조건 컴파일 ______12.3.1 #ifdef, #endif, #else, #ifndef 문 ______12.3.2 #if와 #elif 전처리 명령문 ______12.3.3 #undef 명령문 __12.4 연습문제
13장 하부 C 언어 기능 __13.1 배열 ______13.1.1 배열 원소 초기화하기 ______13.1.2 문자 배열 ______13.1.3 다차원 배열 __13.2 함수 ______13.2.1 인수와 지역 변수 ______13.2.2 함수 결과 반환하기 ______13.2.3 함수, 메서드, 배열 __13.3 블록 __13.4 구조체 ______13.4.1 구조체 초기화하기 ______13.4.2 구조체 내의 구조체 ______13.4.3 구조체에 대한 추가 설명 ______13.4.4 객체지향 프로그래밍을 잊지 말자! __13.5 포인터 ______13.5.1 포인터와 구조체 ______13.5.2 포인터, 메서드, 함수 ______13.5.3 포인터와 배열 ______13.5.4 문자 스트링 상수와 포인터 ______13.5.5 포인터 연산 ______13.5.6 포인터와 메모리 주소 __13.6 이것들은 객체가 아니다! __13.7 기타 언어 기능 ______13.7.1 복합 리터럴 ______13.7.2 goto 문 ______13.7.3 null 문 ______13.7.4 콤마 연산자 ______13.7.5 sizeof 연산자 ______13.7.6 커맨드라인 인수 __13.8 Objective-C가 동작하는 방식 ______13.8.1 사실 1: 인스턴스 변수는 구조체에 저장된다 ______13.8.2 사실 2: 객체 변수는 사실 포인터다 ______13.8.3 사실 3: 메서드는 함수고, 메시지 표현식은 함수 호출이다 ______13.8.4 사실 4: id형은 일반 포인터 형이다 __13.9 연습문제
14장 Foundation 프레임워크 소개 __14.1 Foundation 문서
15장 숫자, 스트링, 컬렉션 __15.1 숫자 객체 __15.2 스트링 객체 ______15.2.1 NSLog 함수에 대하여 ______15.2.2 description 메서드 ______15.2.3 수정 가능한 객체와 수정 불가능한 객체 ______15.2.4 수정 가능한 스트링 __15.3 배열 객체 ______15.3.1 주소록 만들기 ______15.3.2 배열 정렬하기 __15.4 딕셔너리 객체 ______15.4.1 딕셔너리 열거하기 __15.5 세트 객체 ______15.5.1 NSIndexSet __15.6 연습문제
16장 파일 다루기 __16.1 파일과 디렉터리 다루기-NSFileManager ______16.1.1 NSData 클래스 사용하기 ______16.1.2 디렉터리 다루기 ______16.1.3 디렉터리 내용 열거하기 __16.2 경로 다루기- NSPathUtilities.h ______16.2.1 경로 작업에 자주 사용되는 메서드 ______16.2.2 파일 복사하기와 NSProcessInfo 클래스 사용하기 __16.3 기본 파일 작업-NSFileHandle __16.4 NSURL 클래스 __16.5 NSBundle 클래스 __16.6 연습문제
17장 메모리 관리와 ARC __17.1 자동 가비지 컬렉션 __17.2 수동 레퍼런스 카운팅 ______17.2.1 객체 참조와 오토릴리스 풀 __17.3 이벤트 루프와 메모리 할당 __17.4 수동 메모리 관리 규칙 요약 __17.5 자동 레퍼런스 카운팅(ARC) __17.6 strong 변수 __17.7 weak 변수 __17.8 @autoreleasepool 블록 __17.9 메서드 이름과 ARC 없이 컴파일한 코드
18장 객체 복사하기 __18.1 copy와 mutableCopy 메서드 __18.2 얕은 복사와 깊은 복사 __18.3 NSCopying 프로토콜 구현하기 __18.4 세터 메서드와 게터 메서드에서 객체 복사하기 __18.5 연습문제
19장 아카이빙 __19.1 XML 프로퍼티 리스트로 아카이빙하기 __19.2 NSKeyedArchiver로 아카이빙하기 __19.3 인코딩 메서드와 디코딩 메서드 작성하기 __19.4 NSData를 사용해 커스텀 아카이브 만들기 __19.5 아카이버를 사용해 객체 복사하기 __19.6 연습문제
20장 코코아와 코코아 터치 소개 __20.1 프레임워크 계층도 __20.2 코코아 터치
21장 iOS 애플리케이션 만들기 __21.1 iOS SDK __21.2 첫 번째 아이폰 애플리케이션 ______21.2.1 아이폰 애플리케이션 프로젝트 새로 만들기 ______21.2.2 코드 입력하기 ______21.2.3 인터페이스 디자인하기 __21.3 아이폰 분수 계산기 ______21.3.1 Fraction__Calculator 프로젝트 새로 시작하기 ______21.3.2 뷰 컨트롤러 정의하기 ______21.3.3 Fraction 클래스 ______21.3.4 분수를 다루는 Calculator 클래스 ______21.3.5 UI 디자인하기 __21.4 요약 __21.5 연습문제
애플이 오브젝티브-C의 컴파일러를 새롭게 공개하면서, iOS와 관련된 개발 방법도 크게 바뀌었다. 이 책은 오브젝티브-C 분야의 베스트셀러인 『프로그래밍 오브젝티브-C 2.0』의 개정판으로, LLVM 3.0과 ARC 등이 포함된 새 컴파일러에 맞추어 설명 방식을 대대적으로 수정하였다. 이제 막 프로그래밍 세계에 입문한 개발자라도, 예제 애플리케이션을 따라 만들다 보면 어느새 오브젝티브-C에 익숙해진 자신을 발견하게 될 것이다.
이 책에서 다루는 내용
- 오브젝티브-C 언어와 객체지향 프로그래밍의 기초 - 꼭 필요한 C 언어의 기능과 새로 추가된 블록(block) 개념 - 파일 시스템, 메모리 관리, 객체 복사 등 - 코코아/코코아 터치 프레임워크를 활용한 그래픽 애플리케이션 개발 - iOS SDK와 UIKit 프레임워크를 활용한 아이폰 애플리케이션 개발