목차

옮긴이의 글
머리말
감사의 글

1장 오브젝티브-C에 익숙해지기
아이템 1: 오브젝티브-C의 기원과 친숙해지라
아이템 2: 헤더에 헤더를 포함하는 것을 최소화하라
아이템 3: 메서드보다는 같은 일을 하는 리터럴 문법을 사용하라
아이템 4: 전처리기 #define보다는 타입이 있는 상수를 사용하라
아이템 5: 열거형을 사용해 상태, 옵션, 상태 코드를 정의하라

2장 객체, 메시징, 런타임
아이템 6: 프로퍼티를 이해하라
아이템 7: 인스턴스 변수에 내부에서 접근할 때는 직접 접근하라
아이템 8: 객체의 동등 비교를 이해하라
아이템 9: 클래스 클러스터 패턴을 사용해 구현의 상세 내용을 숨기라
아이템 10: 연관 객체를 사용해 기존 클래스에 사용자 정의 데이터를 연관 지으라
아이템 11: objc_msgSend의 역할을 이해하라
아이템 12: 메시지 포워딩을 이해하라
아이템 13: 불투명 메서드를 디버깅할 때 메서드 스위즐링을 사용하라
아이템 14: 클래스 객체가 무엇인지 이해하라

3장 인터페이스와 API 설계
아이템 15: 접두어를 사용해 네임스페이스 충돌을 피하라
아이템 16: 지정 초기화 메서드를 만들라
아이템 17: description 메서드를 구현하라
아이템 18: 가변 객체보다는 불변 객체를 사용하라
아이템 19: 명확하고 일관된 작명법을 사용하라
아이템 20: 프라이빗 메서드 이름에 접두어를 사용하라
아이템 21: 오브젝티브-C 에러 모델을 이해하라
아이템 22: NSCopying 프로토콜을 이해하라

4장 프로토콜과 카테고리
아이템 23: 객체 간 통신에 델리게이트와 데이터 소스 프로토콜을 사용하라
아이템 24: 카테고리를 사용해 클래스를 관리 가능한 다수의 조각으로 나누라
아이템 25: 서드 파티 클래스에는 반드시 카테고리 이름을 접두어로 붙이라
아이템 26: 카테고리에는 프로퍼티를 사용하지 말라
아이템 27: 클래스 확장 카테고리를 이용해 상세한 구현을 숨기라
아이템 28: 프로토콜을 이용해 익명 객체를 제공하라

5장 메모리 관리
아이템 29: 참조 세기를 이해하라
아이템 30: ARC를 사용하여 참조 세기를 쉽게 만들라
아이템 31: 참조를 릴리스하고 관찰 상태(observation state)를 정리하는 일은 dealloc 메서드에서만 하라
아이템 32: 안전한 예외 처리 코드를 작성하려면 메모리 관리를 주의 깊게 다루라
아이템 33: weak 참조를 사용하여 리테인 순환을 피하라
아이템 34: 오토릴리스 풀을 사용하여 최고 메모리 사용량을 낮추라
아이템 35: 좀비를 이용해 메모리 관리 오류를 디버깅하라
아이템 36: retainCount를 사용하지 말라

6장 블록과 GCD
아이템 37: 블록을 이해하라
아이템 38: 많이 사용하는 블록 타입은 typedef를 이용해 타입을 생성하라
아이템 39: 핸들러 블록을 사용해 코드가 여러 개로 나뉘는 것을 막으라
아이템 40: 블록이 자신을 소유한 객체를 다시 소유함으로써 발생하는 리테인 순환을 조심하라
아이템 41: 동기화에는 락보다는 디스패치 큐를 사용하라
아이템 42: performSelector 메서드군보다는 GCD를 사용하라
아이템 43: GCD가 필요한 때와 작업 큐가 필요한 때를 구분해서 알아두라
아이템 44: 플랫폼 확장의 이점을 얻으려면 디스패치 그룹을 사용하라
아이템 45: 스레드 안전한 단일 시간 코드 실행은 dispatch_once를 이용하라
아이템 46: dispatch_get_current_queue 사용을 피하라

7장 시스템 프레임워크
아이템 47: 시스템 프레임워크를 숙지하라
아이템 48: 반복문에는 블록 열거를 사용하라
아이템 49: 커스텀 메모리 관리 시맨틱을 가진 컬렉션을 만들기 위해 무비용 전환을 사용하라
아이템 50: 캐시가 필요할 때 NSDictionary보다는 NSCache를 사용하라
아이템 51: initialize와 load 메서드는 간결하게 만들라
아이템 52: NSTimer가 타깃을 리테인한다는 사실을 기억하라

찾아보기