iOS와 OS X의 메모리 관리와 멀티스레딩 기법

가즈키 사카모토, 도모히코 후루모토 저 / OSXDEV 역

ARC 기본 개념부터 작성 규칙, 세부 구현 내용까지 체계적으로 설명했다. 블록(Block)의 문법과 종류, 내부 구현방식을 포함하는 효과적인 블록 사용법, GCD 기술을 이용한 멀티스레딩 프로그래밍 기법과 디스패치 큐, 디스패치 소스 활용법을 다룬다.


도서 상세

분야: [모바일, 프로그래밍]

출간일: 2013. 8. 26

페이지: 268

도서정가: 20,000 원

ISBN: 9788993827651

부가 정보


출판사 서평

iOS 개발자라면 늘 힘겨운 싸움이었던 메모리 관리의 복잡함을 풀어주는 ARC(자동 레퍼런스 카운팅).
멀티스레딩 프로그래밍의 어려움을 해결해주는 블록과 GCD(Grand Central Dispatch).
이제 ARC, 블록과 GCD는 선택이 아닌 꼭 알아야하는 애플 기술의 핵심이다.

이 책의 내용
- ARC 기본 개념부터 작성 규칙, 세부 구현 내용까지 체계적인 설명
- 블록(Block)의 문법과 종류, 내부 구현방식을 포함하는 효과적인 블록 사용법
- GCD 기술을 이용한 멀티스레딩 프로그래밍 기법과 디스패치 큐, 디스패치 소스 활용법

저자 소개

가즈키 사카모토  :  게임 프로그래머, 임베디드 소프트웨어 개발자, 모바일 소프트웨어 엔지니어, 웹 엔지니어 등 다양한 경험을 가지고 있는 개발자다. 그는 BeBox에 NetBSD 를 포팅, MacVim 의 유지 보수, 아이폰 애플리케이션 개발 등을 했다. Twitter @splhack

도모히코 후루모토 : 게임 개발과 모바일 폰 애플리케이션 개발 경험이 있는 소프트웨어 엔지니어다. Twitter @munakoiso


역자 소개

OSXDEV(osxdev.org) : 2001년도 국내 최초 맥 개발자 커뮤니티로 시작해서 OS X 개발 기술을 스터디하고 기술 문서 한글화 작업 등을 진행해왔다. 최근 iOS 개발자들 이 많아지면서 자연스럽게 국내 최고의 맥/iOS 개발자 커뮤니티로 거듭나고 있다. 매 년 맥 OS X과 iOS 개발 스터디 그룹 활동과 정기 세미나를 개최하고 있으며, 최근 맥/ iOS 콘텐츠를 번역하고 책으로 소개하거나 공동 앱을 만드는 프로젝트도 진행 중이다.


CHAPTER 1 ARC(자동 레퍼런스 카운팅) 이전의 삶 
레퍼런스를 계산하는 메모리 관리 방식의 개요 
메모리 관리에 대한 좀 더 깊이 있는 탐구 
생성하는 모든 객체에 대해 소유권을 갖는다 
“retain”을 이용하여 객체의 소유권을 획득할 수 있다 
더 이상 필요하지 않으면 소유하고 있는 객체의 소유권을 내주어야 한다 
alloc, retain, release, dealloc의 구현 
alloc 메서드
retain 메서드
release 메서드
dealloc 메서드
alloc, retain, release, dealloc의 Apple에서의 구현 
Autorelease 
자동 변수(Autumatic Variables)
autorelease 구현하기
애플의 autorelease 구현 
요약

CHAPTER 2 ARC 규칙 
개요
레퍼런스 카운팅 기법의 바뀐 점
소유권 수식어 
__strong 소유권 수식어
__strong 소유권 속성을 갖는 변수에 대입하기
강한 참조가 동작하는 방식 
__weak 소유권 수식어
순환 참조 
자기 참조 
약한 참조는 사라진다
__unsafe_unretained 소유권 수식어
__autoreleasing 소유권 수식어 
컴파일러가 알아서 __autoreleasing을 처리해준다
결과를 인자로 반환하기 
__strong과 __weak
규칙
retain, release, retainCount, autorelease는 잊어라
NSAllocateObject와 NSDeallocateObject는 잊어라 
객체 생성에 관련된 메서드 작명 규칙을 따르라 
dealloc의 명시적 호출을 잊어라 
NSAutoreleasePool 대신 @autoreleasepool을 사용하라
Zone(NSZone)을 잊어라 
객체 형의 변수들은 C 언어의 구조체 또는 공용체의 멤버가 될 수 없다
프로퍼티
Array
요약

CHAPTER 3 ARC 구현 
__strong 소유권 수식어
array 메서드 호출
__weak 소유권 수식어
객체가 폐기될 때 밑단 살펴보기 
새로 생성된 객체를 할당하기 
즉각적인 객체의 폐기
오토릴리스 풀에 자동으로 추가하기 
__autoreleasing 소유권 수식어 
__unsafe_unretained 소유권 수식어
레퍼런스 카운트 
요약

CHAPTER 4 블록 시작하기 
블록 입문서 
익명 함수(Anonymous functions) 
변수
블록으로 해결 
블록 리터럴 문법
블록 타입 변수
자동 변수 캡처
__block 지시어 
캡처된 자동 변수
요약

CHAPTER 5 블록 구현 
블록의 내부 
소스코드 변환하기 
C++에서 this와 Objective-C에서 self 
_ _cself 선언하기
_ _main_block_impl_0 구조체의 생성자 
_ _main_block_impl_0 인스턴스 초기화하기 
_NSConcreteStackBlock 살펴보기
자동 변수 캡처하기
익명 함수 
쓰기 가능한 변수들
정적 변수나 전역 변수 
__block 지시어 
블록에서 메모리 세그먼트
NSConcreteGlobalBlock 클래스 객체 형태의 블록
힙으로 블록 복사하기
자동으로 블록 복사하기
수동으로 블록 복사하기
블록 여러 번 복사하기 
__block 변수의 메모리 세그먼트
__forwarding 
객체 캡처하기 
언제 copy 메서드를 호출해야만 할까. 
__block 변수와 객체 
블록 순환 참조 
Copy/Release
요약

CHAPTER 6 GCD 
GCD 살펴보기 
멀티 스레드 프로그래밍
CPU가 응용프로그램을 실행하는 방식 
멀티 스레드 프로그래밍의 장점과 단점 
요약

CHAPTER 7 GCD 기본 
디스패치 큐(Dispatch Queues) 
두 가지 타입의 디스패치 큐 
시리얼 디스패치 큐
콘커런트 디스패치 큐
디스패치 큐 얻기
dispatch_queue_create 
메인 디스패치 큐/글로벌 디스패치 큐
디스패치 큐 제어하기
dispatch_set_target_queue
dispatch_after
디스패치 그룹 
dispatch_barrier_async 
dispatch_sync
dispatch_apply 
dispatch_suspend/dispatch_resume 
Dispatch Semaphore
dispatch_once
Dispatch I/O
요약

CHAPTER 8 GCD 구현방식 
디스패치 큐 
커널 수준의 구현
GCD 구조
글로벌 디스패치 큐와 pthread_workqueue
블록 실행하기 
디스패치 소스 
디스패치 소스 사용하기 예제
요약

APPENDIX A ARC와 블록 그리고 GCD 예제
APPENDIX B References