간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 5만원 이상 결제시, 6/1~6/30 기간 중 1회)
삼성카드 6% (27,080원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (27,360원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (20,160원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (23,040원)
(최대할인 4만원 / 2만원 이상 결제)
Close

Objective-C : OS X 구조를 이해하면서 배우는[3판]

소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 57
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

32,000원

  • 28,800 (10%할인)

    1,600P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(4)

  • 사은품(5)

출판사 서평

Objective-C가 국내에 널리 알려진 계기는 iOS 개발 때문이지만 이 언어를 명확히 이해하여 자유자재로 사용하려면 Objective-C의 근간이 되었던 OS X를 함께 이해할 필요가 있다. 최근 애플이 OS X와 iOS를 통합하려는 움직임을 보이고 있으므로 OS X를 이해하는 일의 중요함은 아무리 강조해도 지나치지 않을 정도다. 이 책은 새롭게 추가된 최신 프레임워크 클래스의 내용을 반영하여 개정했다. 세계 시장을 노리고 iOS나 OS X 애플리케이션 프로젝트에 참여하는 개발자라면 이 책을 통해서 진정한 애플 개발 환경의 기본을 다져보자.

어떤 독자를 위한 책인가?
- iOS나 맥 기반의 개발을 하려는 개발자
- 맥 OS X의 구조 기반으로 Objective-C를 배우고자 하는 개발자

목차

옮긴이의 말
지은이의 말

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 언어에 객체지향 기능을 도입한 언어입니다. 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 프로젝트의 각종 문서를 기반으로 실제 프로그램을 작성해서 확인한 결과를 기반으로 구성했으므로 이전 버전에서는 동작하지 않을 수도 있습니다. 이 책에 실린 프로그램은 모두 확인 과정을 거쳤습니다. 소스 프로그램은 한빛미디어 사이트(http://www.hanb.co.kr/exam/2033)에서 내려받을 수 있습니다.

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 앞에 앉아 등만 보여주며 함께 시간을 보내지 못해서 미안했고, 그럼에도 참아주고 이해해줘서 늘 고마웠다는 말을 사랑하는 은미에게 전하고 싶습니다. 부모님과 동생 가족도 항상 건강하고 행복하길 빕니다.
그리고 이 책을 구매해주신 여러분에게도 즐거움이 가득하길 바랍니다.
(/'옮긴이 서문' 중에서)

저자소개

오기하라 타케시 [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

오사카대학 대학원 기초 공학 연구과 수료, 공학박사.
오사카대학 정보처리 교육센터에 Next 컴퓨터를 사용한 교육용 전산시스템을 도입
이후 나라센탄과 칸베대학, 코우지공학대학, 오사카대학을 거쳐 2008년 4월부터 쿄토산업대학 컴퓨터이공학부 교수를 지냄
소프트웨어 개발 환경, 개발 방법에 관한 연구 및 데이터 압축, 심층 암호 등에 대한 연구 중
ToyViewer 등 국제적으로 이름 있는 Mac OS X 소프트웨어의 개발자이기도 함

생년월일 -
출생지 -
출간도서 0종
판매수 0권

라쿠텐이 운영하는 일본 최대 온라인 쇼핑몰 '라쿠텐 이치바'에서 점포가 사용하는 시스템을 개발, 유지보수하는 프로그래머. 배울수록 더 모르게 된다는 말을 매일 실감하지만 심심해서 코드를 짜고 게으름을 부리기 위해 좀 더 고민한다는, 프로그래머적인 도를 깨우치길 원하고 있다. 마음씀씀이가 좋은 사람을 좋아한다.

이 상품의 시리즈

(총 20권 / 현재구매 가능도서 4권)

펼쳐보기

컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

    리뷰

    10.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    10.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용