Cocoa Programming 정오표

코코아 프로그래밍 정오표

2판 정오표는 위의 인사이트 정오표에서 확인하시면 되겠습니다.
아래는 지금까지 발견된 3판 번역서의 오탈자입니다. ㅠ.ㅠ

서문
garbage collertor -> garbage collector

P. 13
Finish 버튼을 클릭 -> Save 버튼을 클릭

P. 32 코드 중
setObjectiveValue -> setObjectValue

P. 42 코드 중
*newnumber -> *newNumber

P. 43
표 3-1 중에서
%s unichar 문자열
->%S unichar 문자열

P. 79
“dealloc 구현하기”에서
NSLog(@”dallocing ….
-> NSLog(@”deallocing ….

P. 104
중간부분 아래에서
… 그림 5.15와 같이 하나는 NSZombiesEnabled 를 ….
->NSZombieEnabled

P. 125
@ends
->@end

P. 120
awakeFromNib 내용 밑에 ‘ } ‘ 추가

P. 136
[textField unbind:@"value];
->[textField unbind:@"value"];

P. 136
맨 밑에…
keyPath는 @”fido -> @“fido”

P. 136
options:NSKeyValueObservingOld
-> options:NSKeyValueObservingOptionOld

P. 149 첫문단

하지만 NSDecimalNumber *를 Float:으로 변환하는 데는 문제가 있다. 포인터는
nil이 될 수 있으나 floats는 그럴 수 없기 때문이다. 만약 setValue:forKey:에 전달되
는 nil값이 포인트가 아닌 유형으로 변환되어야 한다면 다음 메서드를 호출하게
된다.
-> 하지만 NSDecimalNumber *를 float로 변환하는 데는 문제가 있다. 포인터는
nil이 될 수 있으나 float는 그럴 수 없기 때문이다. 만약 setValue:forKey:에 전달되
는 nil값이 포인터가 아닌 유형으로 변환되어야 한다면 다음 메서드를 호출하게
된다.

P. 163

아래 코드가 누락되었네요.
(start… 메서드 정의 코드는 있는데, stop… 메서드 부분은 없네요)

- (void)stopObservingPerson:(Person *)person
{
[person removeObserver:self forKeyPath:@"personName"];
[person removeObserver:self forKeyPath:@"expectedRaise"];
}

P. 186
맨 윗부분

cd /Application/TextEdit.app/Contents
-> /Applications/TextEdit.app/Contents

P. 199
레벨표시기의 키경로를 contidtion -> condition 으로

P. 205
맨 위에
.. 바로 MainMenu.nib과 MyDocument.nib.MainMenu.nib이다. …
-> MyDocument.nib이다.

P. 216

changeBackgroundColor와 checkboxChanged: 메서드는…
-> changeBackgroundColor:와 changeNewEmptyDoc: 메서드는…

P. 227
[checkbox setState...
-> [checkBox setState ...

P. 275
- (int)clickCount/
/ 삭제
...
- (void)mouseDragged:](NSEv…
] 삭제

P. 297
- (void)setBgColor: (NSColor *)c {
[c retaion];
-> [c retain];

P. 298
첫째 줄에
..윈도 가장자리를…
->..뷰 가장자리를…

P. 299
keyDowns 이벤트에서..
-> keyDown: 이벤트에서

P. 387
9번째 줄 에서, ID 가 아래와 같이 Id 여야 함..

@”AWSAccessKeyID=%@&” -> @”AWSAccessKeyId=%@&”

P. 464
…. Xib(1) 파일을 였다.
-> Xib 파일을 연다.

P. 473
윗부분 3번째 줄
NSApplicationMain…
-> UIApplicationMain

6번째줄
NSWindow NSViwe와…
-> NSWindow와 NSView는…

- 오역 수정 -
p299. 4째줄 - 19장 키보드 이벤트
NSView에서 상속 받은 NSResponder는… -> NSView가 상속하는 NSResponder는…

52 Responses to “Cocoa Programming 정오표”

  1. h4z3dic Says:

    ㅎㅎ 저도 예약구매로 구입후 나름 짬짬히 공부를 하고있는데..
    확실히 오타가 많긴 하드라고요.. ㅎㅎ 그래서 완전 입문자로서..
    헷갈리는 부분도.. 아무생각없이 코드를 입력하고 컴팔시킬때..
    에러에.. 당황.. ㅎㅎㅎㅎㅎㅎ

  2. Caroline Says:

    오빠~
    Go to my 싸이 for pictures :)

  3. atdt Says:

    정오표에도 오타가 있네요. ^^

    55쪽 : 새 인스턴스에 init 메시지를 보낸다.. ← 점 두개

    79~81쪽 : entryDate 의 오타는 82쪽에도 있습니다.

    123쪽 : strinf ← string

  4. Jenix Says:

    크흑 죄송합니다.. ㅠ_ㅠ 끊이질 않는 오타군요 ㅠ.ㅠ…

    [atdt] 감사합니다. 바로 수정할 수 있도록 하겠습니다 _ _*;; 오타 잡아주신 분들은 다 기록하는데, 이메일 주소라도 남겨주시지 ^^;

  5. 이병준 Says:

    저도 맥에 관심이 많은데, 맥 OS가 널리 쓰이는 환경이 아니라 그런지
    진입 장벽이 좀 있네요. 좋은 책 번역해 주신 데 감사드립니다. 언젠간
    읽어볼 기회가 있었으면 좋겠습니다.

  6. cinnamon Says:

    메일 보내드렸습니다 :- )

  7. nightmode Says:

    p.139의 그림 5.9에 보면 NSColorWell이 2개 군요. 아래쪽 NSColorWell은 NSTableView가 되어야만 맞는 것 같습니다.

  8. iCoSys Says:

    Mac OS 플랫폼으로 전환을 꿈꾸는 개발자입니다. 코코아 프로그래밍 서적을 구입하고 Xcode 3.1로 연습하고 있는데 첫 프로그램부터 사용방법이 너무 상이해 턱! 하니 막히네요. 대충 비슷하면 따라해보겠지만 그 정도를 넘어서서 난감합니다. 도와주십쇼~

  9. Jenix Says:

    [iCoSys] 답메일 드렸습니다 ^^

  10. nearfri Says:

    여기에 오타 올리면 되는가 보군요.

    p.126: mySelector = @selector(drawMickey); -> mySelector = @selector(drawMickey:);

    아래 설명은 제대로 하셨는데 소스코드 부분은 틀렸네요 :)

  11. startdream Says:

    코코아프로그래밍에 대한 깊은 이해로 번역의 일관성이 너무 좋습니다.
    회사 개발자들에 대한 교육을 위하여 3권의 책을 사서 공부하는 중입니다.
    그런데 그동안 Xcode 3.0으로 Tool이 변경되어서 예제로 나오는 부분을 사용하지 못하고 막혔습니다.
    독윈도우의 메뉴가 변경되어 sub class를 만드는 것부터 막힌 상태입니다. 이 부분을 업그레이드 한 자료가 있으면 좋겠습니다. 꼭 좀 보내주세요.

    다음주 부터는 아들도 공부한다고 시작한답니다. 그 전에 자료가 도착하면 감사하겠습니다.

  12. Hyoun Yongsoo Says:

    기초를 공부하고 있는 사람입니다. 위에서 말씀하신 startdream님의 경우처럼 버전이 바뀌어서 꽉 막혀버린 사람입니다. 그 부분에 대한 내용 좀 부탁드려요.

  13. Jenix Says:

    [stardream] , [Hyoun Yongsoo]
    안녕하세요. Jenix 입니다.
    말씀하신대로, 클래스 생성등 인터페이스 빌더에서 확 바뀐 부분에 대한 자료를
    준비 중에 있습니다 ㅠ.ㅠ 개인적인 사정이 여의치 않아서 자꾸 발표를 미루고 있는데,
    곧 정리되는대로 바로 메일로 알려드리도록 하겠습니다 ^^;
    이건 출판사 인사이트와는 별개로 개인적으로 업데이트하는 것이라는 점 양해 부탁드리구요. (출판사로도 문의하시는 분들이 있어서…)

    조금만 더 기달려주세요 ^^;

  14. 8con Says:

    발표하신다는 자료는 아직 멀었나요? ^^
    눈빠지게 기다리고 있습니다. 흑흑.

  15. baruse Says:

    iCoSys님과 같은 상황이 저도

    맥은 오래 사용하였지만 수준은 완전 초보를 넘지 못하고 있습니다.

    이번 추석 귀향길에 큰맘 먹고 책을사 할려고하는데….

    Interface Builder에서 턱하고 도무지 개념을 못잡고 있습니다.

    Resource에서는 Nib File파일은 없고 xib 파일만 있고…

    어떻게 해야하는지 도움 부탁드리겠습니다.

    부탁드리겠습니다.

  16. 최두운 Says:

    여기 글을 읽어보니 xcode3 으로 수정하는 작업을 하시는것 같은데 이미 다 된건가요?
    다 되셨으면 저한테도 메일 부탁드릴께요^^
    바뀐부분이 많아서 헤매고 있습니다^^

  17. 최두운 Says:

    60p 제일 윗부분에서
    if ([x intersectsArcWithRadius:35.0 …) 책에는 이렇게 되어 있던데

    if ([x intersectsArc : <– 콜론 추가되어야 되는거 아닌가요?
    수정하면
    if ([x intersectsArc :WithRadius:35.0 centeredAtX:19.0 …

  18. Jungsub K. Says:

    안녕하세요!
    저도 XCode 3/Interface Builder 3 관련하여 정리 중이시라는 자료를 같이 받아 볼 수 없을까요?
    워낙에 생초보인지라, 어려움을 격고 있답니다.

    책에보면 39페이지에 빈윈도우에 컨트롤들을 배치하는 내용을 보다 막혔답니다. ㅠ.ㅠ
    버튼 들은 빈윈도우에 잘 배치가 되는데, 왜 TextField는 계속 튕겨나가고 배치가 안되는 걸까요?

  19. Jenix Says:

    관련 자료 정리는 아직 안끝났네요. 제가 일이 너무 밀리다보니 ㅠ.ㅠ 안타깝습니다.
    애플에서도 IB3 에 대해 이렇다할만한 메뉴얼을 내놓지 못하고 있는것도 한몪하는것 같은데… 에고.. 최대한 빨리 작업해볼게요.

    [최두운] intersectsArc 메시지는 제가 집에서 확인해보고 다시 말씀드리겠습니다; 지금 책이 없네요.

    [Jungsub K.] 역시나; 책이 없는 관계로 ㅠ.ㅠ 이따 밤에 다시 답글 달아드릴게요!!

  20. Jenix Says:

    [최두운] 아 해당 질문하신건, 음. 일반 C 나 Java 코드를 옮겼을 때 예제군요. 이건, 보통 함수가 intersectsArc( , , , ,) 와 같은 형태를 가지면, Cocoa 에서는 인수에 대한 설명을 다 붙여준다는 것을 설명하려고 나온 예제인데요,
    intersectsArc 함수의 첫번째 인자가 Radius 를 의미하므로 첫 메시지는
    intersectsArcWithRadius: 라고되고 두번째 인수에 대한 설명으로 centeredAtX: 로 인수를 받고, 같은식으로 하여 최종적으로

    intersectsArcWithRadius:centeredAtX:Y:fromAngle:toAngle:

    과 같은 메시지가 만들어 지는 거에요~

    만약 얘기하신대로, intersectsArc: 가 되려면 Arc: 다음에 인수 하나가 나와야하겠죠? ^^ : 는 메시지끝부분에 붙고 : 다음엔 사용자가 입력하는 인수 값이 와야 합니다~

  21. Jenix Says:

    [Jungsub K.] 혹시 NSTextField 가 아니라 Text Field Cell 을 놓으려고 하신건 아닌지요? Cell 객체를 넣으려고해서 그런것 같습니다 ^^ 지금쯤은 해결하셨을거 같은데..

  22. Jungsub K. Says:

    예, 해결했습니다.^^
    말씀하신 것처럼, NSTextField가 아니라 Text Field Cell을 내려 놓으려구 했네요.^^;

  23. Prin_E Says:

    서문
    garbage collertor -> garbage collector

    P. 13
    Finish 버튼을 클릭 -> Save 버튼을 클릭

    P. 43
    표 3-1 중에서
    %s unichar 문자열
    ->%S unichar 문자열

  24. Prin_E Says:

    P. 79
    “dealloc 구현하기”에서
    NSLog(@”dallocing ….
    -> NSLog(@”deallocing ….

  25. Prin_E Says:

    P. 104
    중간부분 아래에서
    … 그림 5.15와 같이 하나는 NSZombiesEnabled 를 ….
    ->NSZombieEnabled

  26. Prin_E Says:

    P. 125
    @ends
    ->@end

  27. Prin_E Says:

    P. 120
    awakeFromNib 내용 밑에 ‘ } ‘ 추가

  28. Prin_E Says:

    P. 136
    [textField unbind:@"value];
    ->[textField unbind:@"value"];

  29. Prin_E Says:

    P. 136
    맨 밑에…
    keyPath는 @”fido -> @“fido”

  30. ryder Says:

    코코아프로그램 3판 10장을 마치려 하는데… 확장자와 모든 설정을 동일하게 했는데..
    콘솔에는 아래의 메시지가…
    The RaiseMan Doc type doesn’t map to any NSDocumentClass.

    그리고 실행하고 File>New를 하면 아래와 같은 메시지와 함께 다이얼 로그박스가 뜨네요.
    No document could be created

    전혀 문제 없이 따라 한거 같은데… 메일 부탁 드리겠습니다.
    감사합니다.

  31. seonguki Says:

    (위 댓글에 오타가 있어서, 혹시나 해서 댓글 다시 답니다.)

    3판 163쪽에서

    아래 코드가 누락되었네요.
    (start… 메서드 정의 코드는 있는데, stop… 메서드 부분은 없네요)

    - (void)stopObservingPerson:(Person *)person
    {
    [person removeObserver:self forKeyPath:@"personName"];
    [person removeObserver:self forKeyPath:@"expectedRaise"];
    }

  32. Prin_E Says:

    P. 149 첫문단

    하지만 NSDecimalNumber *를 Float:으로 변환하는 데는 문제가 있다. 포인터는
    nil이 될 수 있으나 floats는 그럴 수 없기 때문이다. 만약 setValue:forKey:에 전달되
    는 nil값이 포인트가 아닌 유형으로 변환되어야 한다면 다음 메서드를 호출하게
    된다.
    -> 하지만 NSDecimalNumber *를 float로 변환하는 데는 문제가 있다. 포인터는
    nil이 될 수 있으나 float는 그럴 수 없기 때문이다. 만약 setValue:forKey:에 전달되
    는 nil값이 포인터가 아닌 유형으로 변환되어야 한다면 다음 메서드를 호출하게
    된다.

    중간 부분에
    … setNilValueForkey: …
    -> setNilValueForKey: …

    P. 186
    맨 윗부분

    cd /Application/TextEdit.app/Contents
    -> /Applications/TextEdit.app/Contents

    P. 205
    맨 위에
    .. 바로 MainMenu.nib과 MyDocument.nib.MainMenu.nib이다. …
    -> MyDocument.nib이다.

    P. 216

    changeBackgroundColor와 checkboxChanged: 메서드는…
    -> changeBackgroundColor:와 changeNewEmptyDoc: 메서드는…

  33. 한겸아빠 Says:

    코코아 프로그래밍 잘 보고 있습니다. 2판과 3판을 모두 구매했습니다. 2판에서는 이전버전의 Xcode를 기준으로 되어 있어 실제 예제를 실행하는데 많은 자습(?)이 필요했습니다. 그래서 찾아보니 마침 3판이 나왔더군요. 수고 많으셨구요. 3판 13장 사용자 기본설정 편의 p230 예제에서 “tableView”에서 컴파일 에러가 나서 또 자습을 하던 중 2판의 해당 내용과 비교해보니 2판 p226의 “물론 ~ ” 부터 MyDocument.h 의 수정부분, 부분이 누락되었더군요. 이부분 추가하니, 잘 동작하였습니다.

  34. 무표정 Says:

    3판 199쪽 컨트롤 객체들의값 바인딩할때

    레벨표시기의 키경로를 contidtion -> condition 으로 ^^

  35. seonguki Says:

    3판 387쪽 소스코드에서

    9번째 줄

    @”AWSAccessKeyID=%@&”

    에서, ID 가 아래와 같이 Id 여야 합니다.

    @”AWSAccessKeyId=%@&”

  36. Jenix Says:

    [한겸아빠]

    해당 내용은 3판 116쪽에서 tableView 아웃렛을 추가하고 167쪽에서 연결하는 부분까지 나옵니다. ^^ 중간에 과정을 건너띄신게 아닌가 하구요.

    3판에서 좀 특이한점이 책대로 완전히 따라가지 아니하면,
    뒤쪽에서 빌드오류가 꽤 나더라구요. 참고해주세요~

  37. Prin_E Says:

    P. 136
    options: NSKeyValueObservingOld
    -> NSKeyValueObservingOptionOld

    P. 227
    [checkbox setState...
    -> [checkBox setState ...

    P. 464
    .... Xib(1) 파일을 였다.
    -> Xib 파일을 연다.

    P. 473
    윗부분 3번째 줄
    NSApplicationMain...
    -> UIApplicationMain

    6번째줄
    NSWindow NSViwe와..
    -> NSWindow는 NSView와

    P. 275
    - (int)clickCount/
    / 삭제
    ...
    - (void)mouseDragged:](NSEv…
    ] 삭제

    NSLog(@”mouseDragged:%@”, …
    ” 서체 수정

    P. 297
    - (void)setBgColor: (NSColor *)c {
    [c retaion];
    -> [c retain];

    P. 298
    첫째 줄에
    ..윈도 가장자리를…
    ->..뷰 가장자리를…

    P. 299
    keyDowns 이벤트에서..
    -> keyDown: 이벤트에서

  38. Jenix Says:

    [Prin_E] 찾아주신 것 정오표에 반영했습니다~
    NSWindow NSView와… 부분은 NSWindow와 NSView는… 이 맞네요 ^^;;;
    오타 지적 감사합니다 ㅠ_ㅠ

  39. Says:

    298쪽에 //만약 윈도의 퍼스트 리스폰더라면? 밑에 코딩중에
    if([self window] firstResponder] == self) {
    에 firstResponder 다음 ‘]’ 이거 오류가 나는거 같아요

  40. 이딜 Says:

    [음] 진형이 블로그에 잠시 놀러왔다가 제가 답글을;;
    if([[self window] firstResponder] == self) {

    [self window] 앞에 [ 이게 하나 더 있어야 짝이 맞겠죠~

  41. Prin_E Says:

    P. 301
    5째 줄에서

    뷰가 윈도 안으로 들어 >> 왔을 < isHighlighted = YES;

    isHightlighted = NO;
    -> isHighlighted = NO;

    … 메서드에서 isHightlighted를 확인…
    -> isHighlighted

    P. 304
    밑에서 셋째 줄에
    …NSAttributedString과 NSMutableAttributedString 메서드를 이용..
    -> 클래스를 이용…
    P. 305
    [s drawinRect: ...
    -> [s drawInRect: ...

    P. 310
    [panel beginSheetForDirectory: nil
    file: nil
    modalForWindow: [self window]
    modalDelegate: self < float의

    P. 433
    // 다항식 그래프들을 나타내는 CALayers의 배열을 구한다.
    -> CALayer의 배열을 구한다.

    P. 395
    ManagedViewController 클래스 생성하기
    ->ManagingViewController 클래스 생성하기

    P. 396
    ManagingViewController. 를 편집… ViewController와 이들이…

    밑에서 5번째줄에…
    ManagingViewController:의 서브클래스를 생성…
    -> : 제거

    P. 400
    - (IBAction)changeViewController: (id)sender {
    int I(<-i로 고침) = [sender tag];

  42. panda Says:

    먼저 좋은 책 번역해주셔서 감사합니다.

    현재 코코아 프로그래밍 3판을 구입해서 하나씩 따라해보고 있습니다.
    그러나 xcode 3.1.1을 사용하는데 8장의 RaiseMan을 실행하는데 아래와 같은 에러가 발생해 이걸 어떻게 해결해야 하나 고민하고 있습니다.

    Cannot create NSArray from object of class MyDocument

    구글에서 찾아보면 nib에서는 잘 실행되는데 xib로 하면 발생한다는 사람도 있고 이거 어떻게 해결해야 할까요? ㅠㅜ

  43. panda Says:

    위의 에러는 NSArrayController의 Controller Content > Content Array 에서 Model Key Path를 잘못 기입해서 발생했습니다.

    다들 저와 같은 잘못을 피해주세요 ^^

  44. kenial Says:

    p. 12
    그림 2.2 클래스는 인스턴스를 생성한다.
    -> 그림 2.2 프로젝트 유형 선택하기

    그림의 설명에조차 오타가 -_-;;
    책은 살펴보다보니 참 괜찮은 책인 것 같은데 많이 아쉽습니다.
    역자분의 실수인지 편집측의 실수인지 이것 참…

  45. okskpark Says:

    336page
    - (BOOL)performDragOperation:(id )sender 코드부분에서
    readStringFromPasteboard가 아니라readFromPasteboard인듯 합니다.

  46. skkong Says:

    좋은 책 잘 보고 있습니다. ^^;
    3판 2쇄

    220page 상단…
    원서는 보지 않았지만, 제 생각에 의미적으로는… 이렇게…
    값이 어느 키와 엮여져 있는지 알고 싶다면
    -> 특정 키에 대한 값 정보를 알고 싶다면

    292page
    오타는 아니지만… ^^;
    Object-C NSView subclass형태의 BigLetterView class파일을
    먼저 추가해야 CustomView의 뷰 클래스 이름을 BigLetterView
    로 원활하게 설정가능합니다. => 이 내용이 추가되어야 할거 같아요.

    307page
    하단에…
    - (void) prepareAttributes;
    - (void) drawStringCenteredIn(NSRect)r; 추가

    336page
    return [NSDragOperationCopy];
    -> return NSDragOperationCopy;

    341page
    라이브러리 윈도의 Objects & Controllers에서 독 윈도로
    -> 라이브러리 윈도의 Objects & Controllers에서 Object를 독 윈도로

  47. skkong Says:

    예제 조금씩 따라 하면서… 오탈자 올립니다. ^^;
    3판2쇄

    396page 상단
    ManagingViewController.
    -> ManagingViewController.h

    396page 중간
    File’s Ower
    -> File’s Owner

  48. skkong Says:

    오늘도 사소한 오타^^;
    3판2쇄

    406page 하단
    - (void) addEmployeesObject*Employee *)value;
    - (void) removeEmployeesObject:Employee *)value;
    ->
    - (void) addEmployeesObject:(Employee *)value;
    - (void) removeEmployeesObject:(Employee *)value;

  49. Jenix Says:

    [skkong] 오타 수정 감사합니다 ㅠ.ㅠ 2쇄에도 오타가 남아있었군요.. 에고에고 ㅠ.ㅠ

  50. kim2509 Says:

    코코아 프로그래밍 책을 읽으면서
    배우고 있는데요

    여기의 예제들 소스 혹시 구할 수 있는 곳이 있을까요?
    도움 많이 될거 같습니다.
    알려주세용~

  51. Jungsub K. Says:

    p.178

    dataOfType:error: 메서드와 fileWrapperOfType:error: 메서드의 선언부가 잘못되어 있습니다.

    각각

    - (NSData *)dataOfType:(NSString *)aType error:(NSError *)e
    - (NSFileWrapper *)fileWrapperOfType:(NSString *)aType error:(NSError *)e

    라고 되어 있으나, 마지막에 error 인수의 자료형은 (NSError **)이 맞습니다.

    - (NSData *)dataOfType:(NSString *)aType error:(NSError **)e
    - (NSFileWrapper *)fileWrapperOfType:(NSString *)aType error:(NSError **)e

    다른 아카이브 관련 NSDocument 클래스의 error 인수는 (NSError **) 인데, 위의 두 함수는 왜 아닐까 하고 한참을 고민하다 API 문서를 찾아보니 메서드 선언이 잘 못 나와있네요. :-)

  52. mey Says:

    코코아 프로그래밍 3판 책으로 공부하고 있는 사람입니다.
    인사이트에도 그렇고 다른 사이트에도 그렇고 연습문제 코드를 구할 수가 없던데
    연습문제 소스를 구할 수 있을까요?
    해당 문제들을 직접 풀어보고는 있는데 막히는 것들을 일일히 질문하기도 그렇고 참고삼아 보고 싶은데요…연습문제 소스가 있다면 부탁 좀 드릴께요

Leave a Reply