코코아 프로그래밍 3판 몇가지 오탈자들 # 2 (8~13장까지)
중간중간 띄엄띄엄 보긴 했지만 아무튼 몇가지 오탈자 또는 안되는 것들을 발견했습니다.
원서쪽 오탈자 관련 사이트를 가보니 이런저런 글들이 많더군요. 번역본의 교정 자체도 문제지만 원서 자체에도 오탈자가 좀 되는 것 같습니다.
아무튼 오늘 찾은 것들 정리해두니 도움되시기 바랍니다. ( 혹시 잘못된게 아니라면 댓글이나 이메일로 알려주시기 바랍니다 )
p191, 11장 코어 데이터 기초 : ( 끝까지 똑같이 따라했지만 마지막에 동작하지 않았음 ㅠ.ㅠ, 오타는 아니고 신세한탄 )
p196 이미지 위쪽 : "또한 Generate Decimal Numbers and Always Shows Decimal 옵션을 선택하자" 는 "또한 Generate Decimal Numbers 와 Always Shows Decimal 옵션을 선택하자" 입니다. Generate Decimal Numbers and Always Shows Decimal 이라는 옵션은 없습니다.
p196 이미지 아래 둘째줄 : "셀을 선택하고 이름을 지운다" 는 내용상 "셀을 선텍하고 Title (또는 제목?) 을 지운다" 라고 해야 합니다. 이름을 지운다 라고 하면 보통 Name 필드를 찾기 때문인데 그림 11.6을 보건데 "Title" Attribute 를 지우라는 의미입니다.
p225 책에 적힌대로 코딩하면 동작하지 않습니다. 책에는 extern 두줄을 PreferenceController.h 에 넣고 실제 BNRTableBgColorKey 와 BNREmptyDocKey 는 PreferenceController.m 의 정의하라고 되어 있는데 의미상으로나 동작을 하게 만들기 위해서나 Preference 에서 쓰는 두 상수의 정의는 PreferenceController.h 에 있어야 하고 이 상수들을 쓰는 파일(PreferenceController.m 같은 곳)에서 extern 을 적어주어야 합니다.
p226 상단 코드 중
[defaultValues setObject:[NSNumber numberWithBool:YES] forKey:BNRKey]
는
[defaultValues setObject:[NSNumber numberWithBool:YES] forKey:BNREmptyDocKey]
로 고쳐야 합니다.
p227 BNRTableBgColorKey 와 BNREmptyDocKey 를 PreferenceController.h 에다가 정의해 놓았기 때문에 PreferenceController.m 에서는 두 상수에 대해서 extern 만을 적어주어야 합니다.
따라서 소스코드의 2~3번째 줄의
NSString * const BNRTableBgColorKey = @"TableBackgroundColor";
NSString * const BNREmptyDocKey = @"EmptyDocumentFlag";
는
extern NSString * const BNRTableBgColorKey;
extern NSString * const BNREmptyDocKey;
로 바꿔주어야 컴파일이 됩니다.
p230 위쪽 코드를 실행하면 동작하지 않는데 의 마지막 부분에
[tableView setBackgroundColor:[NSKeyUnarchiver unarchiveObjectWithData:colorAsData]];
부분때문에 그렇습니다. RaiseMan 예제를 쭉 따라서 해왔다 하더라도 151p의 문제2번을 하지 않으셨다면 현재 MyDocument.h 에 tableView 가 없을겁니다.
MyDocument.h 의 @interfance 쪽에
IBOutlet NSTableView *tableView;
를 추가하고 xib에서 table view 를 tableView 로 연결시켜야 제대로 동작합니다.
그리고 230p 코드 아래쪽 보면 "반드시 PreferenceController.h를 임포트해야 거기에 선언한 전역 변수를 사용할 수 있습니다" 라고 되어 있는데 앞에서처럼 수정했다면 두 상수를 extern 으로 대치하시면 됩니다.
참고로 코코아 프로그래밍 앞쪽부터 나오는 RaiseMan 예제는 반드시 차례대로 꼭 해두셔야 합니다. RaiseMan 을 확장해서 만들어 가는 부분들이 꽤 많기 때문에 처음부터 생략하고 넘어가게 되면 자연스럽게 뒤쪽도 죄다 생략해야 하는 불상사가 발생할지도요.
시간이 늦은 관계로 일단 오늘은 여기까지 -_-;;










.jpg)
















댓글을 달아 주세요