해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
저자(글) 오기하라 타케시
저자 오기하라 타케시(荻原 剛志)는 오사카 대학 대학원 기초공학연구과 수료. 공학 박사. 오사카 대학 정보 처리 교육 센터에서 NeXT 컴퓨터로 교육용 계산기 시스템 도입에 종사했다. 그 후, 나라 첨단과학 기술대, 코베 대학, 코치 공과대학, 오사카 대학을 거쳐 2008년부터 쿄토 산업대학 컴퓨터 이공학부 교수. 소프트웨어 개발 방법에 관련 연구 및 심층 암호화를 연구했다. ToyViewer, Typist 등 국제적으로 호평받는 Mac OS X용 소프트웨어 개발자이기도 하다. 신슈 출신.
역자 서수환은 라쿠텐 이치바(시장)에서 점포가 사용하는 시스템을 개발, 유지보수하는 프로그래머. 배울 수록 더 모르게 된다는 말을 매일 실감하지만 심심해서 코드를 짜고 게으름을 부리기 위해 좀 더 고민한다는, 프로그래머적인 도를 깨우치길 원하고 있다. 마음씀씀이가 좋은 사람을 좋아한다.
목차
- 옮긴이의 말
지은이의 말
CHAPTER 1 객체 기반 소프트웨어 작성
1.1 객체 개념
1.2 모듈과 객체
1.2.1 소프트웨어 모듈
1.2.2 독립성 높은 모듈
1.2.3 모듈 정보 은폐
1.2.4 클래스 정의와 인터페이스
1.2.5 메시지 송신 구현
CHAPTER 2 Objective-C 프로그램
2.1 객체와 메시지
2.1.1 메시지 표현식
2.1.2 메시지 셀렉터
2.1.3 인스턴스 생성과 초기화
2.2 클래스 정의
2.2.1 클래스 인터페이스
2.2.2 클래스 구현 부분
2.2.3 클래스 정의 예제
2.3 컴파일
2.3.1 간단한 컴파일 방법
2.3.2 분할 컴파일
2.4 프로그램 작성법
2.4.1 하이브리드 언어
2.4.2 C 함수 이용 방법
2.4.3 정적 변수 정의
2.4.4 헤더 파일 임포트
CHAPTER 3 상속과 클래스
3.1 상속 개념
3.1.1 슈퍼 클래스와 서브 클래스
3.1.2 클래스 계층
3.2 상속을 사용한 클래스 정의
3.2.1 상속 관계 선언
3.2.2 클래스 정의와 헤더 파일
3.2.3 상속과 메서드 호출
3.2.4 슈퍼 클래스의 메서드 호출
3.2.5 초기자 정의
3.3 상속을 사용한 프로그램 예제
3.3.1 메서드 추가 예제
3.3.2 메서드 재정의 예제
3.4 상속과 메서드 호출
3.4.1 self를 사용한 메서드 호출
3.4.2 super를 사용한 메서드 호출
3.4.3 실험 프로그램
3.5 메서드 정의 시 주의사항
3.5.1 지역적인 메서드
3.5.2 지정 초기자
CHAPTER 4 객체 형식과 동적 결합
4.1 동적 결합
4.1.1 동적 결합이란
4.1.2 다형성
4.2 형식과 클래스
4.2.1 클래스명을 형식으로 사용
4.2.2 빈 포인터 nil
4.2.3 형식의 정적 확인
4.2.4 정적 형식 확인 정리
4.3 프로그래밍과 형식 선언
4.3.1 서명이 다를 때
4.3.2 클래스 전방 선언
4.3.3 캐스트를 사용한 예제
4.4 인스턴스 변수의 정보 은폐
4.4.1 인스턴스 변수에 접근
4.4.2 접근자
4.4.3 인스턴스 변수의 가시성
4.4.4 구현 부분의 인스턴스 변수 정의
4.5 클래스 객체
4.5.1 클래스 객체란
4.5.2 클래스 객체 형식
4.5.3 클래스 메서드 정의
4.5.4 클래스 변수
4.5.5 클래스 객체 초기화
4.5.6 초기자 반환형
CHAPTER 5 참조 카운터를 사용한 메모리 관리 방법
5.1 동적 메모리 관리
5.1.1 메모리 관리의 필요성
5.1.2 카운터 관리 방식과 ARC, 가비지 컬렉션
5.2 수동 카운터 관리 방식
5.2.1 참조 카운터
5.2.2 참조 카운터 확인 프로그램
5.2.3 인스턴스를 해제하는 메서드 정의
5.2.4 접근자 메서드와 소유권
5.2.5 인스턴스 자동 해제
5.2.6 자동 해제 풀 사용법과 주의점
5.2.7 임시 인스턴스 생성
5.2.8 실행 반복과 자동 해제 풀
5.2.9 해제되지 않는 객체
5.3 분수 계산기 예제
5.3.1 분수 클래스 Fraction
5.3.2 계산 결과를 저장하는 클래스 FracRegister
5.3.3 메인 함수와 실행 예
5.4 ARC 개요
5.4.1 ARC란
5.4.2 수동 카운터 조작 금지
5.4.3 자동 해제 풀의 새로운 구문
5.4.4 변수 초깃값
5.4.5 메서드 패밀리
5.4.6 메서드 dealloc 정의
5.4.7 ARC를 사용한 프로그램 컴파일
5.4.8 ARC 기본 사항 정리
5.4.9 분수 계산 프로그램을 ARC로 동작시키기
5.5 유지 순환과 약한 참조
5.5.1 유지 순환
5.5.2 소유권과 객체의 관계
5.5.3 약한 참조
5.5.4 변수 제로화
5.5.5 객체 구조의 기본 방침
5.6 ARC 프로그래밍의 기타 주의사항
5.6.1 객체를 일반 포인터처럼 취급
5.6.2 객체를 저장하는 세터 메서드
5.6.3 메서드 인수를 통해 객체 받기
5.6.4 객체를 포함한 C 배열
5.6.5 구조체 관련 제약
5.6.6 컴파일러 지정
CHAPTER 6 가비지 컬렉션
6.1 가비지 컬렉션 개요
6.1.1 필요 없는 객체를 찾으려면
6.1.2 프로그램 작성 시 주의사항
6.1.3 가비지 컬렉터 동작
6.1.4 finalize 메서드 정의
6.1.5 컴파일 관련 설정
6.1.6 카운터 관리 방식의 메서드 취급
6.1.7 가비지 컬렉션을 사용한 프로그램 정리
6.2 가비지 컬렉션의 자세한 기능
6.2.1 세대별 가비지 컬렉션
6.2.2 약한 참조
6.2.3 제로화
6.2.4 가비지 컬렉션으로 회수되는 메모리 영역
6.2.5 수식자 __strong 사용 방법
6.2.6 NSGarbageCollector 클래스
6.2.7 런타임 API
6.3 메모리 관리 방식 비교
6.3.1 카운터 관리 방식과 가비지 컬렉션
6.3.2 메모리 관리를 다른 방법으로 변경
6.3.3 각종 메모리 관리
CHAPTER 7 선언 프로퍼티
7.1 프로퍼티란
7.1.1 프로퍼티를 사용한 프로그래밍
7.1.2 프로퍼티 개념
7.2 프로퍼티 선언과 기능
7.2.1 명시적인 프로퍼티 선언
7.2.2 프로퍼티 구현
7.2.3 @synthesize와 인스턴스 변수
7.2.4 @synthesize로 인스턴스 변수 생성
7.2.5 프로퍼티 속성 지정
7.2.6 값 설정 방법 지정
7.2.7 atomic 관련 메모리 관리 속성
7.2.8 선언 프로퍼티와 상속
7.2.9 메서드 패밀리와 프로퍼티의 관계
7.3 도트 연산자를 사용한 프로퍼티 접근
7.3.1 도트 연산자 사용 방법
7.3.2 도트 연산자를 사용한 식 작성
7.3.3 도트 연산자는 언제 사용하는가
CHAPTER 8 NSObject 클래스와 런타임 시스템
8.1 NSObject 클래스
8.1.1 루트 클래스의 역할
8.1.2 클래스와 인스턴스
8.1.3 인스턴스 생성과 해제
8.1.4 초기화
8.1.5 객체 비교
8.1.6 객체 내용 설명
8.2 메시지 송신 구조
8.2.1 셀렉터와 SEL형
8.2.2 메시지 탐색
8.2.3 메시지 함수 구현
8.2.4 self에 대입
8.2.5 메시지 송신 실행 속도
8.2.6 클래스 객체와 루트 클래스
8.2.7 타깃-액션 패러다임
8.2.8 Xcode에서 액션 메서드와 아울렛 작성
8.3 Objective-C와 Cocoa 환경
8.3.1 Cocoa 환경과 Mac OS X
8.3.2 Cocoa Touch와 iOS
8.3.3 프레임워크
8.3.4 프레임워크 구성과 헤더 파일
8.4 새로운 런타임 시스템
8.4.1 64비트 모델 대응과 모던 런타임
8.4.2 데이터 모델이란
8.4.3 64비트 모델과 정수형
8.4.4 Core Graphics 부동소수점형
8.4.5 취약하지 않은 인스턴스 변수
CHAPTER 9 Foundation 프레임워크의 중요 클래스
9.1 객체 변경 가능성
9.1.1 변경 가능 객체와 불가능 객체
9.1.2 변경 가능 객체 작성
9.2 문자열 클래스
9.2.1 객체 상수 문자열
9.2.2 NSString
9.2.3 NSMutableString
9.3 데이터 클래스
9.3.1 NSData
9.3.2 NSMutableData
9.4 배열 클래스
9.4.1 NSArray
9.4.2 NSMutableArray
9.4.3 배열 객체와 소유권
9.4.4 고속 열거
9.4.5 열거자 NSEnumerator
9.4.6 고속 열거와 열거자
9.4.7 집합 클래스
9.5 사전 클래스
9.5.1 사전 객체 개요
9.5.2 NSDictionary
9.5.3 NSMutableDictionary
9.6 숫자값에 대응하는 랩퍼 클래스
9.6.1 NSNumber
9.6.2 NSValue
9.6.3 형식 코드와 @encode()
9.6.4 NSNull
9.7 NSURL
9.7.1 여기서 다루는 URL이란
9.7.2 NSURL 개요
9.7.3 NSURL을 사용한 리소스에 접근
CHAPTER 10 카테고리
10.1 카테고리 선언과 정의
10.1.1 카테고리란
10.1.2 카테고리와 파일 작성
10.1.3 서브 모듈로서의 카테고리
10.1.4 메서드 전방 선언
10.1.5 비공개 메서드
10.1.6 클래스 확장
10.1.7 카테고리와 선언 프로퍼티
10.2 기존 클래스에 카테고리 추가
10.2.1 새로운 메서드 추가
10.2.2 메서드 추가 예제
10.2.3 기존 메서드 덮어쓰기
10.3 연상 참조
10.3.1 연상 참조 개요
10.3.2 객체 연결과 참조
10.3.3 객체 저장 방법
10.3.4 연결 끊기
10.3.5 카테고리를 사용한 예제
CHAPTER 11 추상 클래스와 클래스 클러스터
11.1 추상 클래스
11.1.1 추상 클래스란
11.1.2 추상 클래스 예제
11.2 클래스 클러스터
11.2.1 클래스 클러스터 개념
11.2.2 실험 프로그램
11.2.3 프로그래밍 시 주의사항
11.3 클래스 클러스터의 서브 클래스 만들기
11.3.1 카테고리 대응
11.3.2 원시 메서드 재정의
11.3.3 문자열의 서브 클래스 만들기
CHAPTER 12 프로토콜
12.1 프로토콜 개념
12.1.1 프로토콜이란
12.1.2 객체 프로토콜
12.2 Objective-C 프로토콜 선언
12.2.1 프로토콜 선언
12.2.2 프로토콜 채용
12.2.3 프로토콜 상속
12.2.4 프로토콜 지정 형식 선언
12.2.5 프로토콜 전방 선언
12.2.6 프로토콜 적합성 확인
12.2.7 필수 기능과 옵션 기능 지정
12.2.8 프로토콜을 사용한 프로그램 예제
12.3 비형식 프로토콜
12.3.1 비형식 프로토콜이란
12.3.2 비형식 프로토콜의 용도
CHAPTER 13 객체 복사와 저장
13.1 객체 복사
13.1.1 얕은 복사와 깊은 복사
13.1.2 존이란
13.1.3 복사 메서드 정의
13.1.4 copy 메서드 예제
13.1.5 변경 가능한 복사의 작성
13.2 아카이브
13.2.1 객체 아카이브화
13.2.2 Foundation 프레임워크의 아카이브 기능
13.2.3 아카이브화 메서드 정의
13.2.4 언아카이브 메서드 정의
13.2.5 아카이브와 언아카이버의 초기화 메서드
13.3 프로퍼티 리스트
13.3.1 프로퍼티 리스트 개요
13.3.2 아스키 코드 형식의 프로퍼티 리스트
13.3.3 XML 형식의 프로퍼티 리스트
13.3.4 프로퍼티 리스트의 변환과 확인
CHAPTER 14 블록 객체
14.1 블록 객체란
14.1.1 C 컴파일러와 GCD
14.1.2 블록 객체 정의
14.1.3 블록 객체와 형식 선언
14.1.4 블록 객체에 포함된 변수 동작
14.1.5 정렬 함수와 블록 객체
14.2 블록 객체 구조
14.2.1 블록 객체의 실체와 수명
14.2.2 피해야 할 작성 패턴
14.2.3 블록 객체의 복사
14.2.4 특별한 변수 지정 __block
14.3 Objective-C와 블록 객체
14.3.1 메서드 정의와 블록 객체
14.3.2 Objective-C 객체로서의 블록 객체
14.3.3 ARC와 블록 객체
14.3.4 블록 객체에 포함된 변수의 동작
14.3.5 컬렉션 클래스에 추가된 메서드
14.3.6 시트 표시에 블록 객체 사용 예
14.3.7 ARC로 블록 객체 사용 시 주의사항
CHAPTER 15 메시지 송신 패턴
15.1 애플리케이션과 실행 반복
15.1.1 실행 반복
15.1.2 타이머 객체
15.1.3 메시지의 지연 실행
15.2 델리게이트
15.2.1 델리게이트 개념
15.2.2 Cocoa 환경의 델리게이트
15.2.3 델리게이트 설정과 프로토콜
15.2.4 델리게이트를 사용한 프로그래밍
15.3 알림
15.3.1 알림과 알림 센터 개념
15.3.2 알림 객체
15.3.3 알림 센터
15.3.4 알림 큐
15.4 리스폰더 체인
15.4.1 리스폰더 체인 개요
15.4.2 애플리케이션의 리스폰더 체인
15.5 메시지 전송
15.5.1 메시지 전송 구조
15.5.2 메시지 전송에 필요한 정보
15.5.3 메시지 전송 정의
15.5.4 메시지 사용 금지
15.5.5 프로그램 예제
15.6 되돌리기 구조
15.6.1 되돌리기 구조 개요
15.6.2 되돌리기 관리자에 기록하기
CHAPTER 16 애플리케이션 구조
16.1 애플리케이션 번들
16.1.1 애플리케이션 번들 구조
16.1.2 nib 파일과 각종 언어 리소스
16.1.3 정보 파일의 주요 내용
16.1.4 NSBundle과 리소스 접근
16.1.5 iOS와 리소스 접근
16.1.6 유니버설 바이너리
16.2 nib 파일 로드
16.2.1 nib 파일 인스턴스화
16.2.2 Mac OS X과 nib 파일 로드
16.2.3 iOS와 nib 파일 로드
16.2.4 nib 파일 안의 유지 순환
16.2.5. nib 파일 안의 객체 초기화
16.2.6 애플리케이션 실행
16.3. iOS 파일 저장 장소
16.3.1. 주요 디렉터리와 역할
16.3.2 디렉터리 경로 취득
16.4 사용자 기본값
16.4.1 설정값 저장
16.4.2 기본값 도메인
16.4.3 사용자 기본값을 조사하는 도구
16.4.4 NSUserDefaults 개요
16.5 애플리케이션의 지역화
16.5.1 메시지 지역화
16.5.2 지역화 지침
16.5.3 로케일
16.6 모듈의 동적 로드
16.6.1 로더블 번들
16.6.2 로더블 번들을 사용한 프로그래밍
16.6.3 플러그인 개요
CHAPTER 17 예제: 간단한 이미지 뷰어
17.1 Application 프레임워크와 인터페이스 빌더
17.2 프로그램 개요
17.2.1 객체 사이의 관계
17.2.2 알림
17.2.3 되돌리기와 되살리기
17.2.4 로더블 번들과 지역화
17.2.5 사용자 기본값
17.3 프로그램 해설
17.3.1 main 함수와 클래스
17.3.2 클래스 WinCtrl
17.3.3 클래스 MyInspector
17.4 애플리케이션 번들 구축
17.4.1 컴파일과 설정 파일 작성
17.4.2 프로그램 동작 예
17.4.3 GUI 정의 파일과 프로그램
CHAPTER 18 예외와 에러
18.1 예외란
18.1.1 예외 처리 개념
18.1.2 Objective-C 예외 처리
18.2 예외 처리 구조 개요
18.2.1 예외 핸들러와 예외 처리 도메인
18.2.2 예외를 나타내는 클래스 NSException
18.2.3 예외 처리 구조 구문
18.2.4 간단한 예외 처리 예제 프로그램
18.3 예외 발생과 전파
18.3.1 예외 전파
18.3.2 직접 예외 발생시키기
18.3.3 예외를 발생시키는 @throw문
18.3.4 @catch의 특수 구문
18.3.5 예외 전파와 @finally
18.3.6 예외 처리 프로그래밍 시 주의사항
18.4 어설션
18.4.1 어설션이란
18.4.2 어설션 매크로
18.5 에러 처리
18.5.1 에러 처리 구조의 목적
18.5.2 에러를 표시하는 클래스 NSError 사용 방법
18.5.3 에러 객체에서 정보 얻기
18.5.4 직접 에러 객체 만들기
18.6 에러 리스폰더 체인
18.6.1 에러 리스폰더 체인 구조
18.6.2 에러 객체의 변경과 복구
CHAPTER 19 병렬 프로그래밍
19.1 멀티스레드
19.1.1 스레드의 기본 개념
19.1.2 스레드 세이프
19.1.3 주의사항
19.1.4 NSThread 사용해 스레드 생성
19.1.5 현재 스레드
19.1.6 GUI 애플리케이션과 스레드
19.2 상호 배제
19.2.1 상호 배제가 필요한 예
19.2.2 락
19.2.3 교착 상태
19.2.4 락 획득 시도
19.2.5 조건이 있는 락
19.2.6 NSRecursiveLock
19.2.7 @synchronized
19.3 오퍼레이션 객체와 병렬 처리
19.3.1 새로운 병렬 처리 프로그래밍
19.3.2 NSOperation을 사용한 처리 개요
19.3.3 NSOperation과 NSOperationQueue의 간단한 사용 방법
19.3.4 태스크가 모두 끝날 때까지 기다리기
19.3.5 오퍼레이션 객체를 사용한 간단한 예
19.3.6 NSInvocationOperation 사용 방법
19.3.7 NSBlockOperation 사용 방법
19.3.8 NSBlockOperation에 여러 블록 객체 추가
19.3.9 태스크 사이에 의존 관계 설정
19.3.10 태스크에 우선순위 설정하기
19.3.11 병렬로 동작하는 태스크의 최대수 설정하기
19.3.12 태스크 중지하기
19.3.13 큐 스케줄링을 중단 상태로 만들기
19.4 병렬 처리의 예제 프로그램
19.4.1 프로그램 개요
19.4.2 클래스 BrowsingViewerCtrl
19.4.3 클래스 BrowsingWinCtrl
19.4.4 클래스 DrawOperation
19.4.5 기타 변경
19.5 커넥션을 사용한 통신
19.5.1 커넥션
19.5.2 프록시
19.5.3 메서드의 포인터 인수
19.5.4 객체의 복사 전달
19.5.5 비동기 메시지
19.5.6 프로토콜 설정
19.5.7 실행 반복의 시작
19.5.8 메시지 송ㆍ수신 동작
19.5.9 스레드 사이의 커넥션
19.5.10 프로세스 사이의 커넥션
19.5.11 프로세스 사이의 커넥션 예제
CHAPTER 20 키-값 코딩
20.1 키-값 코딩 개요
20.1.1 키-값 코딩이란
20.1.2 키-값 코딩의 기본 동작
20.2 프로퍼티에 접근
20.2.1 키-값 코딩의 메서드 동작
20.2.2 속성값의 자동 변환
20.2.3 사전 객체와 키-값 코딩
20.2.4 키 패스를 사용한 접근
20.2.5 다대일 관계와 다대다 관계
20.2.6 배열 객체와 키-값 코딩
20.3 다대다 관계의 접근
20.3.1 인덱스가 있는 접근자 패턴
20.3.2 다대다 관계에 변경 가능한 접근
20.4 KVC 준수
20.4.1 프로퍼티 값 검증
20.4.2 키-값 코딩 준수
20.5 키-값 감시
20.5.1 키-값 감시의 기본
20.5.2 예제 프로그램
20.5.3 다대다 관계의 프로퍼티 감시
20.5.4 의존하는 키 등록
20.6 Cocoa 바인딩 개요
20.6.1 타깃-액션 패러다임의 약점
20.6.2 Cocoa 바인딩이란
20.6.3 Cocoa 바인딩에 필요한 메서드
20.6.4 예제: 2차 함수 그래프를 그리는 소프트웨어
20.6.5 커스텀 뷰의 메서드 정의
APPENDIX 부록
A Foundation 프레임워크 개요
B Core Foundation 프레임워크 개요
C 코딩 지침
칼럼 모아보기
칼럼 1: 미주알고주알 ‘객체지향’
칼럼 2: Cocoa와 Objective-C 역사
칼럼 3: C 언어의 새로운 규격
칼럼 4: 다양한 BOOL형
칼럼 5: 메서드 선언에서 형식을 지정하지 않았다면
칼럼 6: 레퍼런스와 SDK
칼럼 7: Objective-C와 오픈 소스
칼럼 8: 관계 연산자 동작에 대해
칼럼 9: 중첩
칼럼 10: 정적 객체
칼럼 11: const 지정자
칼럼 12: 인트로스펙션
칼럼 13: 함수 포인터
칼럼 14: 조건 지정 컴파일
칼럼 15: 개수가 변하는 인수를 받는 메서드 정의
칼럼 16: 클래스 다중 상속
칼럼 17: 시스템 버전 차이에 대응하는 매크로
칼럼 18: 알림명과 예외명 정의
칼럼 19: 언어와 지역 지정
칼럼 20: 애플리케이션명 지역화하기
칼럼 21: 메시지 안의 어순
칼럼 22: 샌드박스
칼럼 23: Objective-C용 디버거 기능
칼럼 24: 로그 출력 함수 NSLog()
칼럼 25: 개수가 변하는 인수를 가진 매크로
칼럼 26: 단위 테스트
영어에 대해 한마디
출판사 서평
Objective-C 프로그래밍의 기초 문법부터 실제 애플리케이션 제작까지, 한 권의 책으로 오브젝티브-C의 깊이를 느껴보자.
Objective-C가 국내에 널리 알려진 계기는 iOS 개발 때문이지만 이 언어를 명확히 이해하여 자유자재로 사용하려면 Objective-C의 근간이 되었던 OS X를 함께 이해할 필요가 있다. 최근 애플이 OS X와 iOS를 통합하려는 움직임을 보이고 있으므로 OS X를 이해하는 일의 중요함은 아무리 강조해도 지나치지 않을 정도다. 이 책은 새롭게 추가된 최신 프레임워크 클래스의 내용을 반영하여 개정했다. 세계 시장을 노리고 iOS나 OS X 애플리케이션 프로젝트에 참여하는 개발자라면 이 책을 통해서 진정한 애플 개발 환경의 기본을 다져보자.
어떤 독자를 위한 책인가?
-. iOS나 맥 기반의 개발을 하려는 개발자
-. 맥 OS X의 구조 기반으로 Objective-C를 배우고자 하는 개발자
지은이 서문
Objective-C는 C 언어에 객체지향 기능을 도입한 언어입니다. Mac OS X에서 돌아가는 애플리케이션이나 아이폰, 아이팟 터치, 아이패드에서 동작하는 편리한 애플리케이션도 개발하려면 우선 Objective-C를 알아야 합니다.
C 언어에 객체지향을 도입한 언어로는 C++가 유명하지만 Objective-C는 C++와는 다른 언어입니다. 자바나 C#, 루비와도 다른 무척 독특한 언어죠. Objective-C의 가장 큰 특징은 객체지향 언어면서도 상당히 유연한 프로그래밍이 가능할 뿐만 아니라 C 언어의 효율적인 코드를 집어넣을 수도 있다는 점입니다. 다른 객체지향 언어를 배운 적이 있는 분은 C 언어에 추가된 기능이 그리 많지 않다는 점과 독특한 ‘느슨한 느낌’에 놀랄지도 모르겠습니다.
2011년 Mac OS X 10.7 Lion, iOS 5의 등장으로 Objective-C 실행 환경은 모던 런타임이라 불리는 새로운 구조로 통일되었습니다. 동시에 언어 사양도 한 단계 진보해서 새로운 메모리 관리 방식인 ARC를 도입했습니다. 이미 도입된 선언 프로퍼티, 블록 객체 같은 기능은 보다 폭넓게 사용되어 Objective-C 프로그래밍 스타일은 요 몇 년 사이에 극적인 변화를 보였습니다.
이 책은 Mac OS X, iOS에서 개발하는 것을 염두에 두고 Objective-C를 설명합니다. 독자 여러분은 C 언어에 대한 기본 지식을 가지고 있는 분이라고 생각하지만 전문가가 아니라도 괜찮습니다. Objective-C는 애플 사 제품과 그 동작환경에 깊이 관계하므로 언어와 동작환경(OS, 프레임워크)을 따로 떼어 생각할 수 없습니다. 이 책은 언어 사양을 설명하면서 특히 중요한 Foundation 프레임워크의 주요 클래스도 설명합니다. Mac OS X와 iOS의 다른 점도 가능한 한 명확하게 설명하고자 했습니다.
처음부터 밝혀두지만 이 책은 Mac OS X나 아이폰의 그래픽 통합 개발환경의 사용법을 설명하는 책이 아닙니다. GUI 부분의 사용법이나 조합법은 설명하지 않습니다. 이 책을 읽고 당장 인터페이스가 멋진 애플리케이션을 만들 순 없습니다. GUI 구조는 다른 책을 참조하기 바랍니다.
Objective-C 컴파일러를 포함한 Mac OS X 및 iOS 개발환경은 Xcode를 인스톨하면 사용할 수 있으며, Xcode는 앱스토어에서 무료로 내려받을 수 있습니다(윈도우용 개발환경은 없습니다. 2013. 1 기준). 또한 애플 사의 개발자 지원을 이용하면 최신 개발 도구나 예제 코드, 기술 문서를 자유롭게 보거나 내려받을 수 있습니다. 다만, 실제로 아이폰이나 아이패드에 자신이 만든 프로그램을 설치해서 사용하거나 앱스토어에서 소프트웨어를 배포하려면 애플 사에 유료로 개발자 등록을 해야 합니다.
이 책의 설명은 터미널에서 동작하는 예제 프로그램으로 진행합니다. 이것은 개발환경만 설치하면 동작이 가능하고 궁금증이 생겼을 때도 프로그램을 실행해서 바로 확인할 수 있기 때문입니다. 따라서 Xcode 설정 등 언어와 관계없는 부분에서 시간을 허비하지 않아도 됩니다.
이 책은 2009년에 출판된 『Objective-C: 맥과 아이폰 애플리케이션 프로그래밍』(한빛미디어)에 새로운 내용을 추가해 재구성했습니다. 전 판과의 차이는 다음과 같습니다.
새로운 메모리 관리 방식인 ARC를 기본적인 구조에서부터 프로그래밍 주의사항까지 다루었습니다. 또한 ARC를 사용한 애플리케이션 개발을 전제로 예제 설명을 모두 수정했습니다. 한편, 수동 메모리 관리 방식 및 가비지 컬렉션 설명은 간략화했습니다.
인스턴스 변수 및 프로퍼티의 새로운 선언 방식에 대한 설명을 추가하고 예제에도 적용했습니다.
ARC 사용 시 Core Foundation 객체와 형변환에 대한 설명도 추가했습니다.
이 책은 Mac OS X 10.7 Lion, 그리고 iOS 5 단계에서 발표된 애플 사 및 LLVM 프로젝트의 각종 문서를 기반으로 실제 프로그램을 작성해서 확인한 결과를 기반으로 구성했으므로 이전 버전에서는 동작하지 않을 수도 있습니다. 이 책에 실린 프로그램은 모두 확인 과정을 거쳤습니다. 소스 프로그램은 한빛미디어 사이트에서 내려받을 수 있습니다.
Mac OS X, iOS 소프트웨어 개발환경은 무척 유연하며 실행환경도 잘 만들어져 있어서 약간의 지식만 있으면 간단한 프로그램은 금방 만들 수 있습니다. 하지만 본격적인 애플리케이션을 개발하려면 역시 Objective-C를 체계적으로 배워야 합니다. 이것은 실행환경 자체가 Objective-C의 특징을 최대한으로 이용해서 구축되어 있기 때문입니다. 이 책으로 Objective-C 기본을 공부하면 다른 클래스나 프레임워크를 좀 더 편리하게 사용할 수 있을 것입니다. Objective-C로 프로그래밍을 즐겨주세요.
2011년 10월 5일, 애플 사(및 NeXT 사)를 이끌었던 스티브 잡스가 세상을 떠났습니다. 그는 우리에게 몇 번이나 ‘가슴 설레는 미래’라는 마법을 보여주었습니다. 정말 고맙습니다. 편히 잠드세요.
_오기하라 타케시
옮긴이 서문
세상에는 수많은 책이 있습니다. 프로그래밍 언어를 다루는 책도 수없이 많지요. 그런 책 중에는 달콤해서 잘 읽히는 책이 있는가 하면 보다가 깜빡 잠이 들고 마는 딱딱한 책도 있습니다. 그러나 아무리 달아도 욕심을 내다 보면 힘들어서인지 우리는 ‘한 권만 보면 만병통치’를 바라며 오늘도 또 다른 책을 찾아 헤맵니다. 그러다가 지쳐 쓰러질 때쯤 알게 되지요. ‘아, 그런 책은 없구나.’ 역시 세상살이는 만만하지 않습니다.
이 책은 쓴 약과 같습니다. 배 아플 때 먹는 냄새가 많이 나는 약처럼 입에 쓰고 삼키기 어려울지도 모릅니다. 입에 넣었을 때 단맛이라도 나게 코팅이라도 하면 좋으련만 그런 요령도 없는 고지식한 책이죠. 그러나 배탈이 나면 그런 쓴 약을 찾게 되듯, Objective-C로 프로그래밍하다 왜 안 될까라는 벽에 부딪혔을 때 찾게 될 책이 바로 이 책이라고 생각합니다. 바로 Objective-C의 근간을 이루는 내용을 다루기 때문입니다. 어떤 일을 진행하다 막히게 될 경우 기초로 다시 돌아가서 생각하면 돌파구가 보이기 마련이죠. 대개의 입문서나 활용서라면 그냥 넘어갈 부분을 이 책에서는 꼼꼼하게 챙겨 독자로 하여금 기초를 다질 수 있게 쉽게 풀어 놓았습니다. 실력 있는 프로그래머가 되려면 기초를 확실히 해두어야겠죠.
만만하지 않은 세상!
만만하지 않은 언어!
만만하지 않은 책!
그러나 즐거움은 어려움을 극복하고 한 걸음 더 나아가는 데서 온다고 생각합니다.
이 책을 통해 독자 여러분이 Objective-C라는 땅을 힘차게 달릴 수 있는 프로그래머가 되길 바랍니다.
번역하다가 아이폰이 세상에 처음 소개된 2007년, 잡스의 키노트를 보며 두근거렸던 그 밤을 떠올린 적이 있습니다. 아이폰을 쓸 수 없어서 아쉬운 대로 터치를 쓰며 감탄했었죠. 그 뒤로 손바닥 위 세상은 참 많이 변했습니다. 그리고 제 손바닥 위에는 아이폰이 있었지요. 그런 아이폰에서 동작하는 Objective-C 책을 번역하게 된 것도 어떤 인연이 있는 게 아닌가 생각합니다.
세 번째 번역이라 이제 좀 잘할 때도 되었건만 여전히 부족한 글이었습니다. 보기 좋게 고쳐주신 조희진 편집자님에게 감사를 드립니다. 그리고 집에서는 PC 앞에 앉아 등만 보여주며 함께 시간을 보내지 못해서 미안했고, 그럼에도 참아주고 이해해줘서 늘 고마웠다는 말을 사랑하는 은미에게 전하고 싶습니다. 부모님과 동생 가족도 항상 건강하고 행복하길 빕니다.
그리고 이 책을 구매해주신 여러분에게도 즐거움이 가득하길 바랍니다.
_2013년, 서수환
기본정보
ISBN | 9788968480331 | ||
---|---|---|---|
발행(출시)일자 | 2013년 07월 20일 | ||
쪽수 | 652쪽 | ||
크기 |
183 * 235
mm
|
||
총권수 | 1권 | ||
시리즈명 |
한빛미디어 모바일 시리즈
|
||
원서명/저자명 | 詳解Objective-C 2.0. 第3版/荻原剛志 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립