• 오브젝티브-C 핸드북
  • 사전처럼 바로 찾아 바로 쓰는

  • 하야시 아키라 지음
  • 김훈, 강병우 옮김

  • 임베디드 & 모바일 시리즈 _ 024
  • ISBN: 9788992939072
  • 32,000원 | 2012년 08월 24일 발행 | 856쪽



풍부한 예제와 구성이 돋보이는 오브젝티브-C 사전

이 책은 애플의 통합 IDE 툴인 Xcode에서 맥 애플리케이션이나 아이폰 애플리케이션 개발을 위한 오브젝티브-C 언어의 문법과 기능, 기본기를 총망라해서 설명하고 있다.

초보자에게는 알기 쉽게 빌드하고 디버그해 볼 수 있는 예제소스를 제공하며, 중ㆍ고급자를 위해서는 실제 개발 시 필요한 부분을 쉽게 참조하고 찾아볼 수 있게끔 사전식으로 구성하고 있다.

Xcode와 오브젝티브-C가 점점 많이 사용되는 시점에서 맥이나 아이폰 기반 애플리케이션을 개발하는 사람에게는 좋은 참고서가 되리라 생각한다.

하야시 아키라(林 晃)

알케이개발 대표. 기업들로부터 하청 개발 업무를 맡고 있다. 특히 Mac OS X용 개발이나 이기종시스템 간의 프로그램 이식, 디바이스 제어 프로그램이나 화상처리 프로그램 개발 분야에서 다년간의 경험을 쌓아왔다. 저서로는 회사원 시절에 집필한 『JAVA 실천기술 대전집』(공동저술, 나츠메사)가 있다. 그 외의 대표적인 온라인 소프트웨어로는 ‘MultiTextConverter’, ‘RKDetailDesign’이 있으며, 아이폰 앱으로는 ‘아이코도바(合言葉)’ 등이 있으며 웹사이트에서 공개 중이다.

김훈

대학에서 일본어를 전공했고 다양한 분야에서 일본 측과의 비즈니스 진행, 통번역 업무 등을 담당했다. 정보통신 기술과 게임분야에 대한 무한한 관심을 isao의 IT, 게임번역소(http://isao76.egloos.com)라는 블로그를 통해서 발산하고 있다. 현재는 IT, 게임 관련 분야의 번역을 하며, 소셜게임 분야의 발전에 큰 기대를 걸고 있다. 번역한 책으로는 『팩맨의 게임학』, 『SF사전』(근간) 등이 있다.

강병우 (姜秉佑)

미국 캘리포니아 Santa Monica College를 졸업한 후 일본에서 수년간 다수의 금융권 프로젝트에 참여했다.

2008년부터 본격적으로 아이폰 애플리케이션 개발에 뛰어들어 일본의 아이폰 애플리케이션 유명 개발사에서 기획 및 개발책임자로 활동했으며, 동시에 한국 및 미국 시장을 겨냥한 마케팅을 담당했다. 2010년 한국의 아이폰 출시에 맞춰 귀국해 현재 개발자로서 활동하고 있으며 세미나 등에서 강사로 활동하기도 한다.

홈페이지 www.stcocoa.com 에서 여러가지 기술 정보를 공유하고 있다.

 

감수

박지훈

대학에서 컴퓨터공학을 전공하고 LG히다찌에 입사하여 현재까지 10년 이상 국내외 IT 솔루션 및 시스템 개발에 힘써 왔으며, 모바일, RFID, 임베디드, 유비쿼터스 등 주로 신사업 발굴의 프론티어적인 역할을 담당해왔다. 주요 프로젝트로는 세계 최초로 비문에 RFID를 적용했던 한국국방연구원 RFID 비문관리시스템 구축에 수석 개발자로 참여했으며, 경찰청 UTIS 사업의 장비 개발 업체로 선정됨에 따라 RSE(교통정보 수집장치), OBE(차량용 프로브장치)의 개발에 참여하였고, 현재는 세계 최초 시도인 안드로이드 기반 클라우드형 EMV 결제단말기의 개발 및 일본 수출 업무에 몸담고 있다. 평소 글로벌 코리아의 비전은 건축, 토목이 아니라 IT와 콘텐츠에 있다는 굳은 신념을 가지고 대한민국 IT 발전을 위해 절차탁마하고 있다.

  • ▣ CHAPTER 01 Objective-C 기초
    • SECTION-001 Objective-C란?
    • SECTION-002 개발 환경
    • SECTION-003 코드 구현 방법
    • SECTION-004 디버그할 때 편리한 기능
    • SECTION-005 프레임워크
    • SECTION-006 인스턴스의 생성과 소멸
    • SECTION-007 Objective-C 클래스
    • SECTION-008 C언어 코드와의 조합
    • SECTION-009 C 클래스
    • SECTION-010 네임스페이스
    •  
  • ▣ CHAPTER 02 Objective-C의 문법
    • SECTION-011 리터럴
    • SECTION-012 변수
    • SECTION-013 연산자
    • SECTION-014 상수
    • SECTION-015 주석
    • SECTION-016 조건분기
    • SECTION-017 반복문(루프)
    • SECTION-018 전처리 지시자(preprocessor directive)
    • SECTION-019 클래스 정의와 메서드 정의
    • SECTION-020 프로토콜 정의
    • SECTION-021 카테고리 정의
    • SECTION-022 프로퍼티 정의
    • SECTION-023 예외 처리
    • SECTION-024 블록 구문
    •  
  • ▣ CHAPTER 03 오브젝트의 기초
    • SECTION-025 ‘id’ 타입
    • SECTION-026 ‘불변’ 클래스와 ‘가변’ 클래스
    • SECTION-027 NULL과 nil
    • SECTION-028 인스턴스 비교하기
    • SECTION-029 키 밸류 코딩(KVC)으로 프로퍼티 접근하기
    • SECTION-030 값의 변화를 감시하기(KVO)
    •  
  • ▣ CHAPTER 04 문자열
    • SECTION-031 문자열
    • SECTION-032 문자열의 비교 · 검색 옵션
    • SECTION-033 문자열 생성하기
    • SECTION-034 포맷을 지정해서 문자열 생성하기
    • SECTION-035 텍스트 인코딩을 지정해 문자열 생성하기
    • SECTION-036 로컬라이즈 문자열 읽어오기
    • SECTION-037 파일에서 문자열 생성하기
    • SECTION-038 문자열을 파일로 저장하기
    • SECTION-039 문자열의 길이 취득하기
    • SECTION-040 문자열에서 문자 취득하기
    • SECTION-041 문자열에서 일부분 취득하기
    • SECTION-042 처음과 마지막의 공백 문자 삭제하기
    • SECTION-043 문자의 종류 판정하기
    • SECTION-044 문자열 연결하기
    • SECTION-045 문자열 삽입하기
    • SECTION-046 문자열 일부분 삭제하기
    • SECTION-047 문자열 비교하기
    • SECTION-048 대문자·소문자 변환하기
    • SECTION-049 문자열을 수치로 변환하기
    • SECTION-050 문자열을 지정한 문자로 분할하기
    • SECTION-051 문자열 해석하기
    • SECTION-052 문자열 검색하기
    • SECTION-053 캐릭터 세트를 지정해서 검색하기
    • SECTION-054 문자열 치환하기
    • SECTION-055 경로 문자열에서 파일명·디렉터리명 취득하기
    • SECTION-056 홈 디렉터리 취득하기
    • SECTION-057 경로 문자열 정규화하기
    • SECTION-058 문자열을 URL 인코딩·URL 디코딩하기
    •  
  • ▣ CHAPTER 05 컬렉션
    • SECTION-059 컬렉션
    • SECTION-060 배열 생성하기
    • SECTION-061 가변 배열 생성하기
    • SECTION-062 배열 복제하기
    • SECTION-063 사전 생성하기
    • SECTION-064 가변 사전 생성하기
    • SECTION-065 사전 복제하기
    • SECTION-066 세트 생성하기
    • SECTION-067 가변 세트 생성하기
    • SECTION-068 세트 복제하기
    • SECTION-069 인덱스세트 생성하기
    • SECTION-070 가변 인덱스세트 생성하기
    • SECTION-071 컬렉션의 오브젝트 수 취득하기
    • SECTION-072 배열에서 오브젝트 취득하기
    • SECTION-073 배열에서 여러 개의 오브젝트 취득하기
    • SECTION-074 사전에서 오브젝트 취득하기
    • SECTION-075 세트에서 오브젝트 취득하기
    • SECTION-076 배열이나 세트에서 오브젝트 순서대로 취득하기
    • SECTION-077 고속열거를 사용해 배열이나 세트에서 오브젝트 순서대로 취득하기
    • SECTION-078 배열에서 오브젝트 역순으로 취득하기
    • SECTION-079 고속열거를 사용해 배열에서 오브젝트 역순으로 취득하기
    • SECTION-080 인덱스세트에서 값을 순서대로 취득하기
    • SECTION-081 인덱스세트의 값을 역순으로 취득하기
    • SECTION-082 배열에서 오브젝트 검색하기
    • SECTION-083 배열에서 로직을 구현해 오브젝트 검색하기
    • SECTION-084 배열이나 세트에 오브젝트가 포함되어 있는지 조사하기
    • SECTION-085 인덱스세트에 값이 포함돼 있는지 조사하기
    • SECTION-086 C언어의 함수를 사용해 배열 정렬하기
    • SECTION-087 각 오브젝트의 메서드를 사용해 배열 정렬하기
    • SECTION-088 블록을 사용해 배열 정렬하기
    • SECTION-089 정렬 기술 클래스를 사용해 배열 정렬하기
    • SECTION-090 배열의 마지막에 오브젝트 추가하기
    • SECTION-091 배열에 오브젝트 삽입하기
    • SECTION-092 배열 결합하기
    • SECTION-093 배열에서 오브젝트 삭제하기
    • SECTION-094 배열에서 오브젝트 치환하기
    • SECTION-095 배열에서 오브젝트 교체하기
    • SECTION-096 사전에 오브젝트 추가하기
    • SECTION-097 사전에서 오브젝트 삭제하기
    • SECTION-098 세트에 오브젝트 추가하기
    • SECTION-099 세트에서 오브젝트 삭제하기
    • SECTION-100 인덱스세트에 값 추가하기
    • SECTION-101 인덱스세트에서 값 삭제하기
    • SECTION-102 인덱스세트의 값 시프트 하기
    •  
  • ▣ CHAPTER 06 수치
    • SECTION-103 수치
    • SECTION-104 수치를 포함한 ‘NSNumber’ 클래스의 인스턴스 생성하기
    • SECTION-105 범위를 포함한 ‘NSValue’ 클래스의 인스턴스 생성하기
    • SECTION-106 ‘NSValue’ 클래스의 인스턴스에서 범위 취득하기
    • SECTION-107 좌표를 포함한 ‘NSValue’ 클래스의 인스턴스 생성하기
    • SECTION-108 ‘NSValue’ 클래스의 인스턴스에서 좌표 취득하기
    • SECTION-109 사이즈를 포함한 ‘NSValue’ 클래스의 인스턴스 생성하기
    • SECTION-110 ‘NSValue’ 클래스의 인스턴스에서 사이즈 취득하기
    • SECTION-111 사각형을 포함한 ‘NSValue’ 클래스의 인스턴스를 생성하기
    • SECTION-112 ‘NSValue’ 클래스의 인스턴스에서 사각형 취득하기
    • SECTION-113 임의의 구조체를 포함한 ‘NSValue’ 클래스의 인스턴스 생성하기
    • SECTION-114 ‘NSValue’ 클래스의 인스턴스에서 임의의 구조체 취득하기
    • SECTION-115 아핀 변환을 사용해 좌표 변환하기
    •  
  • ▣ CHAPTER 07 데이터
    • SECTION-115 데이터
    • SECTION-117 데이터 생성
    • SECTION-118 가변 데이터 생성하기
    • SECTION-119 외부 메모리블록을 사용한 데이터 생성하기
    • SECTION-120 데이터 복제하기
    • SECTION-121 파일을 읽어들여 데이터 생성하기
    • SECTION-122 데이터를 파일에 저장하기
    • SECTION-123 데이터의 길이 취득하기
    • SECTION-124 데이터의 길이 변경하기
    • SECTION-125 데이터에서 바이트열 포인터 취득하기
    • SECTION-126 데이터에서 바이트열을 메모리블록으로 복사하기
    • SECTION-127 데이터 비교하기
    • SECTION-128 데이터에 바이트열 추가하기
    • SECTION-129 데이터에 데이터 추가하기
    • SECTION-130 데이터의 일부분 치환하기
    • SECTION-131 시스템의 엔디언 취득하기
    • SECTION-132 정수의 엔디언 변환하기
    • SECTION-133 부동소수점의 엔디언 변환하기
    •  
  • ▣ CHAPTER 08 날짜와 시각
    • SECTION-134 일시(NSDate) 오브젝트
    • SECTION-135 현재 일시의 오브젝트 취득하기
    • SECTION-136 특정 일시의 오브젝트 취득하기
    • SECTION-137 특정 일시로부터 계산한 일시 오브젝트 취득하기
    • SECTION-138 일시 오브젝트에서 정보 취득하기
    • SECTION-139 일시를 문자열로 변환하기
    • SECTION-140 포맷을 지정해서 일시를 문자열화 하기
    • SECTION-141 두 일시 비교하기
    • SECTION-142 두 일시에서 최근 일시 취득하기
    • SECTION-143 두 일시의 차 계산하기
    • SECTION-144 타임존 목록 취득하기
    • SECTION-145 로컬 타임존 취득하기
    • SECTION-146 타임존 이름 또는 생략표기로 타임존 취득하기
    • SECTION-147 그리니치 표준시와의 시차를 지정해서 타임존 취득하기
    • SECTION-148 로케일 식별자의 목록 취득하기
    • SECTION-149 로케일 취득하기
    •  
  • ▣ CHAPTER 09 파일 시스템과 입출력
    • SECTION-150 파일 경로와 URL
    • SECTION-151 샌드박스
    • SECTION-152 URL 오브젝트 생성하기
    • SECTION-153 파일 경로로 URL 오브젝트 생성하기
    • SECTION-154 상대경로로 URL 오브젝트 생성하기
    • SECTION-155 URL 오브젝트에서 정보 취득하기
    • SECTION-156 파일에 부분적으로 기록하기
    • SECTION-157 파일 임의의 위치에 기록하기
    • SECTION-158 파일 크기 변경하기
    • SECTION-159 파일을 부분적으로 읽어오기
    • SECTION-160 파일 임의의 위치에서 읽어오기
    • SECTION-161 번들 취득하기
    • SECTION-162 번들의 디렉터리 경로 취득하기
    • SECTION-163 번들 내의 리소스 파일 취득하기
    • SECTION-164 번들의 리소스 파일 목록 취득하기
    • SECTION-165 파일이나 디렉터리의 존재 여부 조사하기
    • SECTION-166 파일인지 디렉터리인지 조사하기
    • SECTION-167 파일이나 디렉터리의 정보 취득하기
    • SECTION-168 파일이나 디렉터리의 정보 설정하기
    • SECTION-169 디렉터리의 파일이나 디렉터리 취득하기
    • SECTION-170 디렉터리 계층의 파일이나 디렉터리를 순서대로 취득하기
    • SECTION-171 디렉터리 생성하기
    • SECTION-172 파일이나 디렉터리 이동하기
    • SECTION-173 파일이나 디렉터리 복사하기
    • SECTION-174 파일이나 디렉터리 삭제하기
    • SECTION-175 임시 디렉터리 취득하기
    • SECTION-176 프로퍼티 리스트 파일
    • SECTION-177 프로퍼티 리스트 파일 생성하기
    • SECTION-178 프로퍼티 리스트의 데이터 생성하기
    • SECTION-179 프로퍼티 리스트의 데이터 읽어오기
    • SECTION-180 클래스의 인스턴스를 아카이브 하기
    • SECTION-181 아카이브 된 데이터에서 인스턴스 생성하기
    • SECTION-182 독자적인 클래스의 인스턴스 아카이브하기
    • SECTION-183 아카이브된 데이터에서 독자적인 클래스의 인스턴스를 생성하기
    •  
  • ▣ CHAPTER 10 XML
    • SECTION-184 XML 지원
    • SECTION-185 이벤트 구동 방식으로 XML 읽어오기
    • SECTION-186 트리 구조 방식으로 XML 읽어오기
    • SECTION-187 XML 텍스트 데이터 생성하기
    • SECTION-188 루트 엘리먼트 취득하기
    • SECTION-189 자식 노드의 개수 취득하기
    • SECTION-190 자식 노드 취득하기
    • SECTION-191 인덱스 번호를 지정해서 자식 노드 취득하기
    • SECTION-192 이전 노드와 다음 노드 취득하기
    • SECTION-193 부모 노드 취득하기
    • SECTION-194 노드의 종류 취득하기
    • SECTION-195 엘리먼트의 이름 취득하기
    • SECTION-196 엘리먼트의 속성 취득하기
    • SECTION-197 이름을 지정해서 엘리먼트 속성 취득하기
    • SECTION-198 텍스트 노드의 텍스트 취득하기
    • SECTION-199 새 XML 트리 생성하기
    • SECTION-200 텍스트 인코딩 지정하기
    • SECTION-201 엘리먼트 생성하기
    • SECTION-202 엘리먼트의 속성 설정하기
    • SECTION-203 텍스트 노드 생성하기
    • SECTION-204 XPath를 사용해 노드 취득하기
    • SECTION-205 XQuery의 쿼리 실행하기
    • SECTION-206 XQuery의 쿼리에서 외부 변수 사용하기
    •  
  • ▣ CHAPTER 11 클래스와 셀렉터
    • SECTION-207 인스턴스의 클래스 취득하기
    • SECTION-208 클래스명 취득하기
    • SECTION-209 클래스명으로 클래스 취득하기
    • SECTION-210 특정 클래스의 인스턴스인지 확인하기
    • SECTION-211 셀렉터의 문자열 표시 취득하기
    • SECTION-212 셀렉터의 문자열 표시에서 셀렉터 취득하기
    • SECTION-213 인스턴스와 셀렉터에서 메서드 호출하기
    • SECTION-214 오브젝트에서 임의의 타입의 파라미터와 반환값을 가진 메서드 호출하기
    • SECTION-215 메서드를 지연해서 호출하기
    • SECTION-216 인스턴스에 특정 메서드가 있는지 확인하기
    • SECTION-217 부모 클래스에 특정의 메서드가 있는지 확인하기
    •  
  • ▣ CHAPTER 12 쓰레드와 타이머와 통지
    • SECTION-218 쓰레드와 타이머
    • SECTION-219 런루프 실행
    • SECTION-220 타이머를 경유해서 메서드 호출하기
    • SECTION-221 타이머를 경유해서 임의의 타입의 파라미터를 취득하는 메서드 호출하기
    • SECTION-222 타이머 삭제하기
    • SECTION-223 쓰레드 생성하기
    • SECTION-224 현재의 쓰레드 중단하기
    • SECTION-225 쓰레드 잠시 중단하기
    • SECTION-226 임의의 메서드를 큐에 등록해 실행하기
    • SECTION-227 블록을 큐에 등록해 실행하기
    • SECTION-228 커스텀 오퍼레이션을 큐에 등록해 실행하기
    • SECTION-229 큐에 등록된 오퍼레이션 취소하기
    • SECTION-230 락을 사용해 베타제어하기
    • SECTION-231 재귀락을 사용해 배타제어하기
    • SECTION-232 상태변수포함 락을 사용해 배타제어하기
    • SECTION-233 ‘@synchronized’ 구문을 사용해 배타제어하기
    • SECTION-234 현재의 쓰레드가 메인 쓰레드인지 판정하기
    • SECTION-235 메인 쓰레드에 메서드 호출 의뢰하기
    • SECTION-236 통지(Notification)
    • SECTION-237 통지하기
    • SECTION-238 통지 받기
    • SECTION-239 쓰레드의 중단을 통지 받기
    •  
  • ▣ CHAPTER 13 사용자 디폴트
    • SECTION-240 사용자 디폴트
    • SECTION-241 사용자 디폴트에 설정값 저장하기
    • SECTION-242 사용자 디폴트에서 설정값 삭제하기
    • SECTION-243 사용자 디폴트에서 설정값 읽어오기
    • SECTION-244 사용자 디폴트에서 모든 설정값 취득하기
    • SECTION-245 사용자 디폴트의 초기값 설정하기
    •  
  • ▣ CHAPTER 14 가비지 컬렉션
    • SECTION-246 가비지 컬렉션
    • SECTION-247 커멘드 라인 툴에서 가비지 컬렉션 사용하기
    • SECTION-248 가비지 컬렉션의 소멸처리를 수동으로 기동하기
    • SECTION-249 포인터 배열 생성하기
    • SECTION-250 포인터 배열에 오브젝트 추가하기
    • SECTION-251 포인터 배열에 오브젝트 삽입하기
    • SECTION-252 포인터 배열에서 오브젝트 삭제하기
    • SECTION-253 포인터 배열에서 ‘NULL’ 삭제하기
    • SECTION-254 포인터 배열 내의 오브젝트 치환하기
    • SECTION-255 포인터 배열에서 오브젝트 취득하기
    • SECTION-256 포인터 배열에서 배열 생성하기
    • SECTION-257 포인터 배열에서 엘리먼트 수를 취득하기
    • SECTION-258 포인터 배열에서 순서대로 오브젝트 취득하기
    • SECTION-259 해시 테이블 생성하기
    • SECTION-260 해시 테이블에 오브젝트 추가하기
    • SECTION-261 해시 테이블에서 오브젝트 삭제하기
    • SECTION-262 해시 테이블 결합하기
    • SECTION-263 다른 해시 테이블에 포함된 오브젝트 삭제하기
    • SECTION-264 해시 테이블에서 엘리먼트 수 취득하기
    • SECTION-265 해시 테이블에 오브젝트가 포함되어 있는지 확인하기
    • SECTION-266 해시 테이블에서 오브젝트를 한 개씩 취득하기
    • SECTION-267 해시 테이블에서 오브젝트를 전부 취득하기
    • SECTION-268 맵 테이블 생성하기
    • SECTION-269 맵 테이블에 오브젝트 추가하기
    • SECTION-270 맵 테이블에서 오브젝트 삭제하기
    • SECTION-271 맵 테이블에서 엘리먼트 수를 취득하기
    • SECTION-272 맵 테이블에서 오브젝트 취득하기
    • SECTION-273 맵 테이블에서 키를 순서대로 취득하기
    • SECTION-274 맵 테이블에서 오브젝트 순서대로 취득하기
    • SECTION-275 맵 테이블에서 사전을 생성하기
    •  
  • ▣ APPENDIX 실제 애플리케이션 개발
    • SECTION-276 UIKit을 활용한 iPhone 애플리케이션 개발
    • SECTION-277 AppKit을 사용한 Mac OS X 애플리케이션의 개발
  • 50쪽, NSLog(@"sn=%llu, data0=%d, data1=%d", newItem->sn, newItem->data0, newItem->data1)에서 newItem을 p로 변경

    NSLog(@"sn=%llu, data0=%d, data1=%d", 
          p->sn, p->data0, p->data1);
    
    free(p);
    

예제코드 관련 GitHub 페이지

관련 글