이전

리뷰 (3)

한줄평
평점 분포
  • 리뷰 총점10 0%
  • 리뷰 총점8 67%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 33%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 5.0
  • 50대 8.0
리뷰 총점 종이책
[2012-028] Objective-C 프로그래머를 위한 친절한 입문서
"[2012-028] Objective-C 프로그래머를 위한 친절한 입문서" 내용보기
이 책은 iOS나 Mac OS X용 애플리케이션을 작성하기 위하여, Objective-C 프로그램을 사용하고자 하는 사람에게 적절한 입문서라고 하겠다.   iOS나 Mac OS X용 애플리케이션을 개발한 경험은 없지만, 89년 처음 C 언어는 접한 후, 어쩔 수 없이 밤샘을 계속 한 경험 때문인지 순수 C언어와 관련된 부분은 읽기 편했다. 다행인지 불행인지, C++과 Java 때문에 밤샘한 날들도 적지 않아
"[2012-028] Objective-C 프로그래머를 위한 친절한 입문서" 내용보기

이 책은 iOS나 Mac OS X용 애플리케이션을 작성하기 위하여, Objective-C 프로그램을 사용하고자 하는 사람에게 적절한 입문서라고 하겠다.

 

iOS나 Mac OS X용 애플리케이션을 개발한 경험은 없지만, 89년 처음 C 언어는 접한 후, 어쩔 수 없이 밤샘을 계속 한 경험 때문인지 순수 C언어와 관련된 부분은 읽기 편했다. 다행인지 불행인지, C++과 Java 때문에 밤샘한 날들도 적지 않아서 그런지, Objective-C에 반영된 객체지향 개념들도 낯설지 않았다. 하지만, Objective-C의 메소드를 호출하는 방식, 관련 용어, (MS Visual Studio나 Eclipse를 주로 사용하여서 그런지) Xcode의 구성 등에서 새로운 것들이 적지 않았다.

 

다행히도, 저자가 다양한 주제에 대하여 간결하게 설명하였기 때문에(책페이지수가 366페이지인데 비하여 책의 목차가 37장으로 되어 있어, 대략 1장에 10페이지로 구성했다), 이해하기가 쉬웠다.

참고로, NSString, NSArray, NSData ... 등 클래스명을 시작할 때 붙는 NS가 무슨의미인지 27장에서 설명되고 있다.(NextStep을 의미힌다. 자세한 내용은 스티브잡스가 창립한 Next 회사를 참고하기 바란다. http://en.wikipedia.org/wiki/NeXT )

 

 

다음은 책 내용의 요약이다.

 

1장에서는 Objective-C가 C를 기반으로 객체지향 프로그래밍이 가능하도록 확장된 언어이며, iOS와 Mac OS X 운영체제용 애플리케이션을 작성하는데 사용된다고 설명하고 있다. 특히, Objective-C가 C언어를 기반으로 확장된 언어이기 때문에, C언어에 대해서 정확히 이해하는 것이 중요하다고 강조하고 있다.

 

2장에서는 Mac OS X용이나 iOS 애플리케이션을 개발하기 위해서는 Xcode 통합개발도구를 사용해야 하며, 이 개발툴을 어떻게 사용하는지 간단한 예제를 만들어 실행시키는 예를 보여주고 있다.

 

3장에서 11장까지는 C언어에 대한 설명이다.

 

3장에서는 변수와 타입에 대해서 설명하면서, 변수의 타입에 따라 메모리에 확보되는 공간의 바이트 수가 다르다는 것을 설명하고 있다. 4장은 조건에 따른 분기를 위한 if/else를 설명하고 있다.(여기서는 3항 연산자를 이해하는 것이 도움이 되리라)

 

5장에서는 함수의 기본적인 내용들 -프로토타입(Prototype),패러미터(Parameter), 인자(Argument), 호출(Call), 재사용성(Reusability), 선언(Declare), 정의(Define)- 에 대해서 설명하고, 실제로 C 프로그램을 작성하다가 버그 추적할 때 가장 도움이 되는 내용은 지역변수(Local Variable), 프레임(Frame), 스택(Stack)에 대한 설명을 하고 있다. 디버깅할 때 스택 프레임에 대하여 명확히 이해하는 것이 필수이다. (자바에서 printStrackTrace에 해당하는 내용이다.) 책에서는 Xcode의 디버그 내비게이터(Debug Navigator)에서 현재생성된 스택 프레임을 확인하는 방법에 대해서 설명하고 있다.

 

또한 전역변수와 정적변수의 차이를 이해해야 하는데, 어떤 함수에서도 언제라도 액세스할 수 있는 변수가 전역변수(Global Variable)이고, 정적변수(Static Variable) 는 프로그램이 종료할 때까지 해당 변수를 사용할 수 있지만, 해당 정적변수에 접근할 수 있는 범위는 해당 정적변수를 선언한 함수에서만 가능하다고 이해하면 되겠다. 즉, 이들간의 차이를 변수의 생존기간과 접근 가능한 범위를 기준으로 이해해야 한다.

 

6장에서는 수에 관하여 설명하고 있다. printf로 출력하는 형식, 정수의 범위 등에 관한 설명이 나온다. 특히.. 처음 C 언어를 배울 때, long형을 출력할 때 %ld 대신 %d를 써서 정상적으로 출력이 되지 않았던 기억이 난다. 이 에러를 잡으려고 몇줄 안되는 프로그램을 가지고 몇시간을 헤맸었던 것 같다. 그리고 타입 변환 연산자(cast operator)는 자주 사용되므로 잘 이해하는 것이 필요하다. 65페이지에서 "절댓값" 이라는 용어를 사용하는데... 그동안 수학교과서에서 "절대값"이란 용어로 배웠는데 최근에 "절댓값"으로 개정되었다고 한다. 왜 이리 어색한지..

 

7장 루프은 wile 루프, for 루프, do-while 루프에 관한 설명과, break, continue를 사용하는 방법에 대해서 설명하고 있다.

 

8장에서는 C언에서 가장 어려운 부분으로 알려진 포인터에 대한 설명이 나와 있다. 여기서 주소를 32비트로 나타내면 2^32=4G 정도의 메모리 주소를 구분할 수 있고(실제로 사용자 응용프로그램은 2GB의 메모리까지 구분하여주소를 지정할 수 있다. 나머지 반은 커널을 위한 메모리 공간이다) 64비트 주소를 사용하게 되면 2^64=1.844*10^19 = 18.44*10^18=18.44 Exa Byte의 주소공간을 구분할 수 있다(1/2로 나눠도 9.22 Exa Byte를 구분할 수 있다. 참고로 10^9 = Giga, 10^12=Tera, 10^15=Peta, 10^18=Exa, 최근 Oracle의 Exadata라는 제품을 출시하였다. Exa Byte는 쉽게 백만Tera Byte라고 이해하면 될 듯..) http://en.wikipedia.org/wiki/Tera-

 

포인터 변수에 대한 이야기, 포인터 변수에 특정 변수의 주소를 저장하는 방법, 특정 데이터 타입의 크기를 알기 위하여 sizeof() 를 사용하는 방법, NULL과 nil에 대해서도 설명하고 있다. (초급 프로그래머가 자주 실수하는) 포인터 변수를 선언할 때, a, b 두개를 포인터 변수로 선언하기 위하여 int* a, b; 와 같이 선언하면 안되고, 반드시 int *a, *b;와 같이 선언해야 하낟고 강조하고 있다.

 

9장에서는 참조에 의한 전달(Pass by reference)에 대한 설명을 하고 있다. 이 부분을 초보자에게 설명하기 쉽지 않은데.. 스택구조를 그림으로 그려서 참조에 의한 전달이 어떻게 이루어지고 있는지 설명하고 있다.(저자의 독자에 대한 배려가 느껴지는 부분이다) 대부분의 C 프로그램이 수행도중에 core dump가 생성되고 중단되는 가장 큰 이유가 포인터가 NULL값인데 포인터를 이용하여 뭔가 처리하려는 작업을 할 때이다. 저자는 포인터가 NULL인지 반드시 확인해야 한다고 강조하고 있다.

 

10장에서는 서로 관련된 데이터 전체를 변수 하나에 담기 위하여 사용되는 구조체(Struct)에 대해서 설명하고 있다. 구조체의 멤버를 액세스하는 방법, 구조체 타입을 정의하기 위하여 typedef을 사용하는 방법을 설명하고, 도전과제에서 시간측정할 때 자주 사용되는 struct tm 을 이야기하고 있다.

 

11장에서는 프로그래머가 메모리를 할당하고 사용하기 위한 힙(Heap) 메모리 영역, 메모리 할당을 위한 malloc() 함수, 해제하기 위한 free()함수에 대해서 설명하고 있다. 이 장의 그림에서 heap 메모리영역에 할당된 메모리 공간을 stack 프레임에 생성된 지역포인터변수가 가리키고 있는 그림이 있다. Head First Java에서는 이런 설명이 반복되고 있는데, C 책에서는 이렇게 친절히 그림을 그려주는 경우가 많지 않다.

 

 

지금까지 C언어 대한 기본적인 내용을 다루었고, 12장부터 26장까지는 Objective-C의 기본적인 내용에 대해서 설명하고 있다.

 

12 장에서는 객체(Object), 메시지(Message), 메소드(Method), 클래스(Class), 인스턴스 변수(Instance Variable), 인스턴스(Instance)에 대해서 설명하고 있다. 객체지향 분석/설계/프로그래밍 책들을 보면 용어들이 조금씩 다르다. 여기서 크게 분류를 해보면 객체는 크게 자신의 상태와 이 상태를 조작할 수 있는 행위를 가지게 되는데 다양한 이름으로 불린다. 이론적으로는 객체의 상태(State), 속성(Property), 필드(Field), 멤버데이터(Member Data), 인스턴스 변수(Instance Variable) 등으로 불린다. 또한, 객체의 행위(Behaviour)는 메소드(Method), 멤버함수(Member Function), 인스턴스 메소드(Instance Method) 등으로 불린다. 여기서 객체(Object)와 인스턴스(Instance)에 대하여 구분을 하면, 객체는 인스턴스보다 더 넓은 개념으로 사용된다. 이에 반하여 인스턴스는 특정한 클래스로 부터 생성되는 객체라는 의미를 지닌다.

 

Xcode를 이용하여 객체를 만드는 예제를 설명하고 있는데... 105페이지에서는 "date 메시지를 NSdata 클래스에 보낸 것이다"라는 문장이 나오는데 이 단락에 있는 NSData는 NSDate로 바꿔야 의미가 맞는 것 같다. 오타인듯

 

Object-C 언어의 문법이 처음 나오는데... C나 Java를 주로 본 사람들은 좀 당황할 수 있는 형태이다. [객체의 포인터, 트리거된 메소드 이름] 의 형태는 눈에 익숙하지 않다. 메소드 명끝에 :을 붙이는 것도 그렇고, 인자를 넘겨주는 방식도 익숙해지는데 시간이 걸릴 듯하다. 객체의 포인터를 리시버(receiver), 트리거할 메소드 이름을 셀렉터(selector)라고 하는데 이 이름을 기억해 두는 것이 필요하다. 뒤에서 간간히 나온다. 또한, 어떤 객체를 가리킬지 정하지 않고 포인터만 만들어야 할 때 id 타입을 사용한다는 것이 특이하다고 하겠다.

 

13장에서는 메시지를 보내는 방법, 여러 개의 인수를 보내는 방법, nil에 메시지 보내지 않도록 체크하기 등에 관하여 설명하고 14장에서는 문자열을 처리하기 위한 NSString 클래스를 설명하고 있다. 특히, Objective-C를 이용하여 프로그램을 작성하는 경우에는 C의 문자열보다는 NSString을 사용하기를 권장하고 있다.

 

15장에서는 다른 객체들을 가리키는 포인터들의 리스트인 NSArray와 이 클래스의 메소드들을 설명하고 객체다이어그램을 예를 들어 설명하고 있다. 다만, NSArray 인스턴스는 배열에 포인터를 추가/삭제할 수 없기 때문에 NSArray의 서브클래스인 NSMutableArray를 사용해야 추가/삭제를 해야 함을 설명하고 있다.

 

16장에서는 Xcode에서 도움말 문서를 찾는 방법, 도움말 문서가 어떻게 구성되어 있는지에 대한 설명을 하고 있다.

 

17장에서는 직접 자신의 클래스를 만드는 방법에 대해서 설명하고 있다. 헤더파일(Header File 또는 인터페이스 파일Interface File)에는 인스턴스 변스와 인스턴스 메소드를 선언하고 과 구현파일(Implementation File)에는 각 메소드를 구현한다. 헤더 파일의 확장자 명은 .h로 일반적인 C/C++ 의 헤더와 동일한데, 구현파일의 확장자 명은 .c 가 아니라 .m이다.

 

그리고 클래스의 인스턴스 변수의 값을 설정하거나(setter), 읽어오는 (getter)를 합쳐서 액세서 메소드(Accessor Method 또는 단순히 액세서(Accessor)라고 불림)를 어떻게 생성할 수 있는지 설명하고 있다. 단순한 설정이나 읽기를 위해서는 프로퍼티(Property)를 이용하면 된다. @property와 @synthesize를 이용하면 단순한 인스턴스 변수 설정이 간결하게 끝낼 수 있다. 또한 메소드의 실행 주체가 되는 객체의 포인터로 self를 설명하고 있다. 다른 언어에서는 this를 사용한다.

 

18장에서는 상속(Inheritance)를 이용하여 어떻게 클래스를 생성할 수 있는지 설명하고 있다. Objective-C의 모든 클래스 상위클래스는 NSObject라는 것은 기억해야 한다. Java에서 Object클래스와 동일한 역할을 하고 있다. 또한 상위 클래스의 메소드를 오버라이드(override)하는 방법과 상위 클래스를 나타내기 위하여 super라는 지시자(Directive)를 사용하는 것을 기억하자.

 

19장 객체 인스턴스 변수

인스턴스 변수의 타입을 객체형 속성(Object-type attribute), 단일 관계(To-one Relationship), 다중관계(To-many Relationship)으로 구분할 수 있으며, 각각 어떻게 구현되는지 그림과 프로그램을 통하여 설명하고 있다.

 

특히, 이 장에서 객체 소유권(Object Ownership)과 참조자동 카운팅(ARC, Automatic Reference Counting)에 대해서는 꼭 이해를 해야 한다. 이는 객체의 유효기간 및 메모리 누수와 연관이 있기 때문이다.

 

Objective-C 프로그램을 보면서 한가지 특이한 부분은, 162~163페이지 코드와 같이 for루프안에서 변수를 선언하는 부분이다. 다른 언어에서는 for 루프안에서 변수를 선언하는 것은 바람직하지 않은 코딩의 형태로 간주한다. 대부분 컴파일러가 투덜댄다. 그런데... Objective-C에서는 for 루프 안에서 Employee *person=[[Employee alloc] init]' 과 같이 사용해도 문제가 없다는 것은 Objective-C의 경우에는 컴파일러가 내부적으로 person이라는 지역변수의 명을 변경하여 처리하기 때문이라고 추축해 본다. 내부적으로 지역변수 명을 변경하지 않으면 스택 프레임에서 같은 변수 이름으로 스택 메모리를 할당하려고 하면서 문제가 발생하기 때문이다.

 

(작성하는 도중에 IE가 먹통이 되었다... 다행히도 임시저장한 부분에서 다시 불러 올 수 있었다.. 그런데 왜 이리 내용이 많은 거야...ㅠㅠ)

 

20장에서는 양방향으로 참조의 관계가 있어서 메모리가 해제되지 않는 경우(유지 사이클, Retain Cycle)를 Xcode에서 파악하기 위하여 Profile을 사용하는 방법, 약한 참조(Weak Reference)를 활용하는 방법에 대하여 설명하고 있다. 참조 자동 카운팅(ARC)과 아니라 참조 수동 카운팅(MRC, Manual Refence Counting)을 하는 방법에 대해서도 설명하고 있다.

 

21장에서는 NSArray/NSMutableArray, NSSet/NSMutableSet, NSDictionary/NSMutableDictionary와 같은 컬렉션 클래스를 설명하고 있다. 특이한 것은 NSArray, NSSet, NSDictionary는 추가/삭제가 불가능하고 이들의 하위 클래스인 NSMutableArray, NSMutalbeSet, NSMutableDictionary가 추가나 삭제가 가능하다는 것이다. 변경불가능한 컬렉션을 사용하는 이유는 동료 프로그래머가 자신의 컬렉션을 변경하는 경우를 막기 위해서 던지, 성능 때문이라고 한다.

 

22장 에서는 #define과 전역변수(Global Variable)을 이용하여 상수를 선언하는 방법을 설명하고 있다. Objective-C에서는 #define보다는 전역변수를 이용하여 상수를 처리하는 것이 일반적이라고 한다. (const와 같은 키워드를 이용해서..) 이는 성능상의 이점과 디버깅하기에 유리하기 때문이라고 한다.

 

23장에서는 NSString 인스턴스, NSData 인스턴스를 파일에 쓰는 방법, 파일에서 읽는 방법, 파일조작을 처리하는 도중 발생하는 에러를 처리하기 위하여 NSError를 사용하는 방법에 대해서 설명하고 있다.

 

24장에서는 어떤 이벤트가 발생하면 다른 객체에 메시지를 보내는 콜백(Callback)을 3가지 유형으로 나누어서 설명하고 있다. 타킷-액션(Target-action)유형은 특정 이벤트가 발생하면 액션을 유발하는 특정 메시지를 타겟인 특정 객체로 보내고, , 도우미 객체(Helper Object)는 특정 이벤트가 발생하면 프로토콜을 준수하는 도우미객체(Delegate 또는 Data source)에게 메시지를 보내고, 알림(Notification)은 이벤트가 발생하면 알림센터로 알림을 보내고, 알림센터는 해당 알림을 객체들에게 전달하는 방식이다.

 

이들 3가지 방식에 대하여 다이어그램을 그려서 설명하고 프로그램을 작성하여 설명하고 있다. 어떤 유형의 콜백을 사용하는 것이 바람직한 지에 설명하고 있다. 한 가지 일만 하는 경우는 타킷-액션이, 복잡한 일을 하는 경우에는 도우미 객체를, 다른 객체들에 콜백을 트리거하는 경우는 알림을 사용하는 것이 바람직하다고 설명하고 있다. 마지막으로는 콜백을 사용할 때 메모리누수가 발생하지 않도록 주의해야 할 내용을 설명하고 있다.

 

25장 에서는 메소드 선언 리스트인 프로토콜(Protocol)에 대해서 설명하고 있다. 사실... 이 부분은 Java의 Interface와 유사한데... 다른 점이라면 선언된 메소드의 구현을 필수와 선택으로 나눌 수 있다는 점이다. 즉, 객체가 해당 역할을 수행하기 위하여 프로토콜에 선언된 모든 메소드를 구현하지 않고 필수인 메소드만 구현해도 된다는 이야기다. 왜 프로토콜이라는 용어를 사용하였는지.. 생소하다. 프로토콜을 주로 통신에서 사용하는 용어인데...

 

26장에서는 컴퓨터와 사람이 모두 읽을 수 있는 파일을 만들기 위하여 프로퍼티 리스트(Property List)를 사용하는 방법에 대해서 설명하고 있다. 프로퍼티 리스트를 줄여서 "P리스트"라고도 함

 

 

27장에서 28장은 실제로 애플리케이션을 만드는 방법에 대해서 설명하고 있다.

27장에서는 iOS 애플리케이션을 Xcode를 이용하여 생성하는 방법을 설명하고 있다. (참고로 237페이지에서 애플의 모든 클래스가 NS로 시작되는 데 이는 NeXTSTEP을 의미한다고 한다) 또한, iOS애플리케이션을 만드는데 MVC(Model-View-Controller) 패턴을 적용하는 것을 설명하고, 실제 애필리케이션을 빌드한 후, 확인을 위해 iOS 시뮬레이터를 활용하는 방법을 설명하고 있다. 28장에서는 데스크톱 코코아 애플리케이션을 Xcode를 이용하여 만드는 방법을 설명하고 있다.

 

 

29장부터 32장에서는 Objective-C 고급주제에 대하여 설명하고 있다.

29장에서는 NSObject 클래스의 init 메소드에 대해서 설명하고, 인수를 받기 위해서 새로운 초기화 메소드를 만드는 방법, 초기화 메소드를 정의할 때는 지정된 초기화 메소드(Designated Initializer)를 이용하는 것이 필요하다는 것을 설명하고 있다.

 

30장에서는 프로퍼티에 대하여 자세하게 살펴보고 있는데... 이중에서 수명 지정자 unsafe-unretained, strong, weak, copy는 자세히 살펴보고 이해하는 것이 필요할 것이다.

 

31장에서는 기존의 임의의 클래스에 메소드를 추가하기 위하여 카테고리(Category)를 사용하는 방법에 대해서 설명하고 있다. C#에서도 이런 기능이 있다. 매우 유용한 기능이라고 하겠다.

 

32장에서는 블록(Block)을 설명하고 있는데... 블록(Block)이라는 용어가 오해를 불러 일으킬 수 있는 것 같다. 궁극적으로 익명함수(Annoymous Function), 클로저(Closure), 람다(Lambda)와 동일한 의미이다. 블록을 정의하는 방법, 변수를 사용하는 방법, 값을 지정하는 방법, 블록을 넘겨주는 방법, 리턴 값을 지정하는 방법, 스택에 만들어진 블록을 힙으로 복사하는 방법 등에 대해서 설명하고 있다.

 

 

33장부터 37장까지는 C언어와 관련된 고급(?)주제를 설명하고 있다.

33장에서는 비트(Bit)의 의미, 바이트의 의미, 16진법, 비트단위 OR, 비트단위 AND, 배타적 OR, 보수, 비트 시프트에 대하여 설명하고, 34장에서는 C에서 문자열을 어떻게 다루는지, 문자열 끝은 항상 0x00으로 끝나야 하는 점, 리터럴 문자열의 의미, NSString에서 C 문자열로 또는 반대로 변환하는 방법에 대하여 설명하고 있다.

 

35장에서는 C에서 배열을 어떻게 처리하는 지, 배열에 관하여 설명하고, 36장에서는 main()함수의 두 개의 패터미터인 int argc, const char * argv[]의 의미에 대해서 설명하고, 37장에서는 다중분기를 위하여 Switch를 사용하는 방법에 대하여 설명하고 있다.

 

 

t********s 2012.06.21. 신고 공감 5 댓글 0
리뷰 총점 종이책
쉽지만 알찬 오브젝티브-C 입문서
"쉽지만 알찬 오브젝티브-C 입문서" 내용보기
자바 언어로 주로 개발을 해서인지 안드로이드 책을 보때는 언어 자체에 대해 큰 부담은 없었는데 아이폰의 경우 오브젝티브-C 라는 언어가 벽으로 자리 잡고 있었다. 아이폰 개발은 해보고 싶었지만 언어를 몰라 차일 피일 미루다 때마침 오브젝티브-C 언어 자체에 대한 책을 구하게 되었고, 그 책이 바로 "아론 힐리가스의 오브젝티브-C 프로그래밍" 이다.얼마나 잘 썼는지 아마존 No.1
"쉽지만 알찬 오브젝티브-C 입문서" 내용보기

자바 언어로 주로 개발을 해서인지 안드로이드 책을 보때는 언어 자체에 대해 큰 부담은 없었는데 아이폰의 경우 오브젝티브-C 라는 언어가 벽으로 자리 잡고 있었다. 아이폰 개발은 해보고 싶었지만 언어를 몰라 차일 피일 미루다 때마침 오브젝티브-C 언어 자체에 대한 책을 구하게 되었고, 그 책이 바로 "아론 힐리가스의 오브젝티브-C 프로그래밍" 이다.


얼마나 잘 썼는지 아마존 No.1 이라는 문구가 눈에 들어온다. 그도 그럴것이 '아론 힐리가스'로 검색을 해보면 저자 이름만 보고 책을 구입했다란 글도 심심치 않게 볼 수 있다.


책에서 설명하는데로 책의 예제를 하나씩 타이핑하면서 책을 보기 시작했다. 지루하긴 하지만 백문이 불여일타란 말처럼 손으로 쳐봐야 기억에 남는것 같다. 이 책이 좋은것은 바로 이것이다. 예제 코드를 하나씩 쳐보게 한다. 일반 C 언어부터 오브젝티브-C를 익히며 iOS 어플리캐이션까지 만들어 보는데 그림과 코드가 많아 보기 쉽다.


쉽기만 한 책인가? 분명히 C 언어의 기본을 가르치는 Part2 까지는 분명히 그렇다. C언어의 어려운 개념이 있으면 과감히 넘어간다. 하지만 Part3 부터는 생소한 오브젝티브-C 의 개념이 점점 덧붙으면서 어려워 진다. 익숙하지 않기 때문에 한번 보고 이해가 되지는 않는것 같다. 그래도 쉽게 설명되어 있으니 여러번 반복하면 익숙해 질 것 같다. Part3 부터는 빠르게 한번 훑터보고 세세하게 따라해 보는 식으로 책을 보고 있다.


사실 이런 좋은 책은 원서로 보는게 더 좋지만 번역도 거부감 없이 잘 읽힌다. 믿고 번역서를 봐도 후회가 없을 것 같다. 명성 만큼 좋은 책인것 같고, 아이폰을 개발하는데 있어 처음 시작이 되는 책이라 생각한다.

c*****c 2012.06.17. 신고 공감 0 댓글 0
리뷰 총점 종이책
C언어 개발 경험이 있는 분께는 비추입니다.
"C언어 개발 경험이 있는 분께는 비추입니다." 내용보기
C언어 개발 경험이 있는 분께는 비추입니다.1/3이 기본 개발 환경 설명 및 C언어 기본 내용 이네요.완전 초급(언어에 대한 지식 없는)에게는 좋을 수도 잇겠지만,중급이상 개발자라면 비추입니다.차라리 어렵다고해도 바이블이 훨 나을듯
"C언어 개발 경험이 있는 분께는 비추입니다." 내용보기

C언어 개발 경험이 있는 분께는 비추입니다.

1/3이 기본 개발 환경 설명 및 C언어 기본 내용 이네요.

완전 초급(언어에 대한 지식 없는)에게는 좋을 수도 잇겠지만,

중급이상 개발자라면 비추입니다.

차라리 어렵다고해도 바이블이 훨 나을듯


p*****2 2013.06.21. 신고 공감 0 댓글 0