ARC 블록 GCD를 활용한 iOS와 OS X의 메모리 관리와 멀티스레딩 기법
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
책 소개
이 책이 속한 분야
- 국내도서 > 컴퓨터/IT > 모바일프로그래밍 > 아이폰/아이패드
- 국내도서 > 컴퓨터/IT > 모바일프로그래밍 > 안드로이드
- 국내도서 > 컴퓨터/IT > 대학교재
- 국내도서 > 대학교재 > 컴퓨터
작가정보
저자(글) 가즈키 사카모토
저자 가즈키 사카모토는 게임 프로그래머, 임베디드 소프트웨어 개발자, 모바일 소프트웨어 엔지니어, 웹 엔지니어 등 다양한 경험을 가지고 있는 개발자다. 그는 BeBox에 NetBSD 를 포팅, MacVim 의 유지 보수, 아이폰 애플리케이션 개발 등을 했다.
저자(글) 도모히코 후루모토
저자 도모히코 후루모토는 게임 개발과 모바일 폰 애플리케이션 개발 경험이 있는 소프트웨어 엔지니어다.
번역 OSXDEV
역자 OSXDEV(osxdev.org)는 2001년도 국내 최초 맥 개발자 커뮤니티로 시작해서 OS X 개발 기술을 스터디하고 기술 문서 한글화 작업 등을 진행해왔다. 최근 iOS 개발자들 이 많아지면서 자연스럽게 국내 최고의 맥/iOS 개발자 커뮤니티로 거듭나고 있다. 매 년 맥 OS X과 iOS 개발 스터디 그룹 활동과 정기 세미나를 개최하고 있으며, 최근 맥/ iOS 콘텐츠를 번역하고 책으로 소개하거나 공동 앱을 만드는 프로젝트도 진행 중이다.
목차
- CHAPTER 1 ARC(자동 레퍼런스 카운팅) 이전의 삶 … 1
레퍼런스를 계산하는 메모리 관리 방식의 개요‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 1
메모리 관리에 대한 좀 더 깊이 있는 탐구‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5
생성하는 모든 객체에 대해 소유권을 갖는다‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 6
“retain”을 이용하여 객체의 소유권을 획득할 수 있다‥ ‥‥‥‥‥‥‥‥‥ 8
더 이상 필요하지 않으면 소유하고 있는 객체의 소유권을 내주어야 한다‥ ‥ 9
alloc, retain, release, dealloc의 구현‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 15
alloc 메서드‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥16
retain 메서드‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 18
release 메서드‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥21
dealloc 메서드‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥21
alloc, retain, release, dealloc의 Apple에서의 구현‥ ‥‥‥‥‥‥‥‥‥‥ 22
Autorelease‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 26
자동 변수(Autumatic Variables)‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥27
autorelease 구현하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥30
애플의 autorelease 구현‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥34
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 37
CHAPTER 2 ARC 규칙 … 39
개요‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 40
레퍼런스 카운팅 기법의 바뀐 점‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 41
소유권 수식어 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 41
__strong 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥42
__strong 소유권 속성을 갖는 변수에 대입하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥43
강한 참조가 동작하는 방식‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥44
__weak 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥48
순환 참조‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥49
자기 참조‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥52
약한 참조는 사라진다‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥54
__unsafe_unretained 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥56
__autoreleasing 소유권 수식어‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥59
컴파일러가 알아서 __autoreleasing을 처리해준다‥‥‥‥‥‥‥‥‥‥‥‥60
결과를 인자로 반환하기 ‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥63
__strong과 __weak‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥66
규칙‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 67
retain, release, retainCount, autorelease는 잊어라‥ ‥‥‥‥‥‥‥‥‥‥67
NSAllocateObject와 NSDeallocateObject는 잊어라‥ ‥‥‥‥‥‥‥‥‥‥68
객체 생성에 관련된 메서드 작명 규칙을 따르라‥ ‥‥‥‥‥‥‥‥‥‥‥‥69
dealloc의 명시적 호출을 잊어라‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥70
NSAutoreleasePool 대신 @autoreleasepool을 사용하라‥‥‥‥‥‥‥‥‥71
Zone(NSZone)을 잊어라‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥72
객체 형의 변수들은 C 언어의 구조체 또는 공용체의 멤버가 될 수 없다‥‥‥72
프로퍼티‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 83
Array‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 84
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 87
CHAPTER 3 ARC 구현 … 89
__strong 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 90
array 메서드 호출‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥91
__weak 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 93
객체가 폐기될 때 밑단 살펴보기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥95
새로 생성된 객체를 할당하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥95
즉각적인 객체의 폐기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥97
오토릴리스 풀에 자동으로 추가하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥98
__autoreleasing 소유권 수식어‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥103
__unsafe_unretained 소유권 수식어‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥104
레퍼런스 카운트 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥104
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥107
CHAPTER 4 블록 시작하기 … 109
블록 입문서‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥110
익명 함수(Anonymous functions)‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 110
변수‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 111
블록으로 해결‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 113
블록 리터럴 문법‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥115
블록 타입 변수‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥117
자동 변수 캡처‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥120
__block 지시어‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 121
캡처된 자동 변수‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 122
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥124
CHAPTER 5 블록 구현 … 125
블록의 내부‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥125
소스코드 변환하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 126
C++에서 this와 Objective-C에서 self‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 128
_ _cself 선언하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 129
_ _main_block_impl_0 구조체의 생성자‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 130
_ _main_block_impl_0 인스턴스 초기화하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥ 131
_NSConcreteStackBlock 살펴보기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 133
자동 변수 캡처하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥136
익명 함수‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 138
쓰기 가능한 변수들‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥140
정적 변수나 전역 변수‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 141
__block 지시어‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 143
블록에서 메모리 세그먼트‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥148
NSConcreteGlobalBlock 클래스 객체 형태의 블록‥‥‥‥‥‥‥‥‥‥‥ 150
힙으로 블록 복사하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 152
자동으로 블록 복사하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 153
수동으로 블록 복사하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 155
블록 여러 번 복사하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 157
__block 변수의 메모리 세그먼트‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥159
__forwarding‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 162
객체 캡처하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥164
언제 copy 메서드를 호출해야만 할까.‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 170
__block 변수와 객체‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥171
블록 순환 참조 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥175
Copy/Release‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥182
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥184
CHAPTER 6 GCD … 185
GCD 살펴보기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥185
멀티 스레드 프로그래밍‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥188
CPU가 응용프로그램을 실행하는 방식‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 190
멀티 스레드 프로그래밍의 장점과 단점‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 191
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥193
CHAPTER 7 GCD 기본 … 195
디스패치 큐(Dispatch Queues)‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥195
두 가지 타입의 디스패치 큐 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 197
시리얼 디스패치 큐‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 197
콘커런트 디스패치 큐‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 197
디스패치 큐 얻기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥199
dispatch_queue_create‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 199
메인 디스패치 큐/글로벌 디스패치 큐‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 203
디스패치 큐 제어하기‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥207
dispatch_set_target_queue‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 207
dispatch_after‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 208
디스패치 그룹‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 210
dispatch_barrier_async‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 214
dispatch_sync‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 216
dispatch_apply‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 219
dispatch_suspend/dispatch_resume‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 221
Dispatch Semaphore‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 222
dispatch_once‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 225
Dispatch I/O‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥226
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥228
CHAPTER 8 GCD 구현방식 … 229
디스패치 큐‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥229
커널 수준의 구현‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 229
GCD 구조‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 230
글로벌 디스패치 큐와 pthread_workqueue‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 231
블록 실행하기‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 233
디스패치 소스‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥233
디스패치 소스 사용하기 예제‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥236
요약‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥238
APPENDIX A ARC와 블록 그리고 GCD 예제 … 229
APPENDIX B References … 245
출판사 서평
iOS 개발자라면 늘 힘겨운 싸움이었던 메모리 관리의 복잡함을 풀어주는 ARC(자동 레퍼런스 카운팅).
멀티스레딩 프로그래밍의 어려움을 해결해주는 블록과 GCD(Grand Central Dispatch).
이제 ARC, 블록과 GCD는 선택이 아닌 꼭 알아야하는 애플 기술의 핵심이다.
이 책의 내용
- ARC 기본 개념부터 작성 규칙, 세부 구현 내용까지 체계적인 설명
- 블록(Block)의 문법과 종류, 내부 구현방식을 포함하는 효과적인 블록 사용법
- GCD 기술을 이용한 멀티스레딩 프로그래밍 기법과 디스패치 큐, 디스패치 소스 활용법
더 이상 주저하지 말고 이 책과 함께 ARC와 블록, GCD를 시작해보자.
이 책은 iOS와 OS X에 포함된 ARC, 블록, GCD(Grand Central Dispatch)에 관한
것으로 다른 책들과는 다르다. 간단히 말해서 이 책은 다음과 같은 깊이 있는 내용을
담고 있다.
- ARC는 iOS 5와 OS X 라이언에서 새롭게 소개된 메모리 관리 기법이다.
- 블록과 GCD는 주로 멀티스레드 기반 앱을 작성하는 데 사용하며, iOS 4와 OS X 스노레퍼드에서 소개되었다.
이런 새로운 기술들은 iOS 5와 OS X 라이언 개발 환경에서는 필수 사항이다. 얼핏
이해하기 쉬운 것 같아 보이지만, 실제로는 확실하게 자신의 것으로 만들지 못하면
여러 난관에 부딪칠 것이다. 이 책에서는 단지 애플의 레퍼런스 문서를 읽기만 하는
것보다 쉽게 이해할 수 있도록 애플의 소스코드를 기준으로 설명하고 있다.
누구에게 필요한 책인가
- C/C++를 이해하고 있지만 Objective-C가 낯선 개발자
- Objective-C 소스코드가 어떻게 동작하는지 알고 싶은 개발자
- iOS 또는 맥 앱을 개발하면서 좀 더 상위 수준으로 발전하고 싶은 개발자
기본정보
ISBN | 9788993827651 | ||
---|---|---|---|
발행(출시)일자 | 2013년 08월 31일 | ||
쪽수 | 268쪽 | ||
크기 |
173 * 230
mm
|
||
총권수 | 1권 | ||
원서(번역서)명/저자명 | Pro Multithreading and Memory Management for IOS and OS X/Sakamoto, Kazuki |
Klover
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)
구매 후 리뷰 작성 시, e교환권 100원 적립