By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
1 | OK | On the cover a dot is missing in “Daniel H. Steinberg”, I think. (Dave says: actually, Daniel styles it without the period. Pure affectation, I’m sure :) | 2008-09-18 | ||
12 | TYPO | The word ‘get’ is repeated - “get get” - in the last paragraph on the page. | 2008-10-06 | ||
12 | TYPO | Instead of: “Even though those are the two applications get get most” write: “two applications that get most” | 2008-10-06 | ||
13 | TYPO | The phrase “Who don’t you just…” should probably read “Why don’t you just…” | 2008-10-06 | ||
13 | TYPO | Instead of: “An experienced Cocoa developer will look at your | 2008-10-06 | ||
13 | TYPO | “But fifty lines in you’ll be aware that you’re working too hard. | 2008-10-06 | ||
17 | OK | Strongly suggest: | 2008-10-06 | ||
51 | SUGGEST | Explain the use of the asterisk in the following line:’ IBOutlet WebView * myWebView; | 2008-10-26 | ||
19 | TYPO | “It’s easy to get lose the big picture ..” was probably meant to be something like: It’s easy to lose sight of the big picture … | 2008-10-06 | ||
55 | TYPO | “Next, in Interface Builder and select the Connections Inspector for the” —> | 2008-10-06 | ||
16 | OK | on section 2.1 the 4th paragraph the last sentence: its also repeated at section 2.2: | 2008-10-06 | ||
39 | TYPO | Last sentence: “This allows us | 2008-10-06 | ||
39 | TYPO | Missing “at”, as in: “We’ll look AT a typical example of how you might take advantage…” at the bottom of page 39. | 2008-10-06 | ||
39 | TYPO | — in the last 2 sentences on the page, there are 2 separate errors: — instead of “We’ll look a typical” it should read “We’ll look at a typical” | 2008-10-06 | ||
41 | TYPO | — middle of first paragraph: | 2008-10-06 | ||
41 | TYPO | 3.5 Dynamic Binding | 2008-10-06 | ||
53 | TYPO | — first sentence after graphic (continued from previous page): | 2008-10-06 | ||
57 | TYPO | — middle of page, after code | 2008-10-06 | ||
60 | TYPO | — end of second paragraph under 5.1 Delegates — should read (add ‘with’ between ‘up’ and ‘applications’): | 2008-10-06 | ||
65 | TYPO | — last paragraph of page, before code: — should read (change ‘real’ to ‘really’): | 2008-10-06 | ||
21 | SUGGEST | Daniel: While you’re describing springs and struts, you may want to add a snippet on how to set a minimum width and height for the window. (Or you could make it a DIY challenge with hints). The UI gets kind of gunked up if you squeeze it all the way down and expand it again. It’s also fun to see what happens if you set the min dimensions to something larger than the starting dimensions. Nice work, as always. Can’t wait to see the finished product! | 2008-10-26 | ||
39 | TYPO | section 3.4 page 39 last paragraph ‘goBack: not matter what it’s type’ should be NO matter not NOT MATTER | 2008-10-06 | ||
53 | TYPO | page 53 first word ‘and’ should be ‘an’ | 2008-10-06 | ||
57 | TYPO | page 57 5th paragraph in the text ‘encouraging other object to’ object should be plural objects. | 2008-10-06 | ||
65 | TYPO | page 65 last paragraph “There real isn’t any need” should be “There really isn’t any need” | 2008-10-06 | ||
23 | TYPO | “So you just need to wire up the web views ability to go” | 2008-10-06 | ||
11 | TYPO | Figure 1.1 is labeled “New Project Templates” and should be labeled “Helpful Tools”. Figure 1.2 is labeled “Helpful Tools” and should probably be labeled “Context Sensitive Help Menu”. | 2008-10-06 | ||
16 | OK | Delete the comma after “Figure 2.2” (Dave says: this is house style) | 2008-10-06 | ||
53 | TYPO | On the first line, I believe “object” should be plural. | 2008-10-06 | ||
70 | TYPO | — last paragraph (before code) last 2 sentences: | 2008-10-06 | ||
72 | TYPO | — starting at the 3rd line of the 3rd paragraph: — should read (add ‘are’ between ‘they’ and ‘almost’): | 2008-10-06 | ||
10 | SUGGEST | I’m pretty sure 10.5.0 Leopard disks came with XCode 3.0 (it’s not written on the disk, but that’s what I had here). So, maybe it would be a good idea to highly recommend installing the latest from the download. | 2008-10-06 | ||
11 | SUGGEST | The free level does not give you “the same access to | 2008-10-06 | ||
17 | SUGGEST | “Quit SimpleBrowser and let’s get started on creating the | 2008-10-06 | ||
18 | SUGGEST | In XCode 3.1.1, Figure 2.4 doesn’t look the same… the middle pane of the library includes much more information (and has several options for display) | 2008-10-26 | ||
13 | TYPO | “Who don’t you just…” should be “Why don’t you just…” in the first paragraph. | 2008-10-06 | ||
39 | TYPO | Last para sentence: " The type of sender is upcast to id" is missing a period. | 2008-10-06 | ||
67 | TYPO | The first bullet point at the bottom of the page reads: “You are sending the addObserver:selector:name:object: method to the default notification center.” It should probably be either: “You are sending the addObserver:selector:name:object: message to the default notification center.” or “You are calling the addObserver:selector:name:object: method to the default notification center.” | 2008-10-06 | ||
67 | TYPO | Bottom bullet on page 67 reads: “Here the observer is set to self but it can be any object interested in receiving the notification.”, but in the method call above, observer is actually set to “observerObject”. | 2008-10-06 | ||
83 | TYPO | In this sentence: “If the users of your application are running Tiger, for exam- | 2008-10-06 | ||
87 | TYPO | This sentence: “At this point you are explicitly creating two objects in code. One of them, myGreeting, was an instance of the class TemporaryGreeting which | 2008-10-06 | ||
91 | TYPO | The refactoring example (both picture and code) isn’t showing (or using) the “[worldGreeter release];” statement that you would get from renaming myGreeter on the prior page. | 2008-10-26 | ||
90 | TYPO | In these sentences “Both instances of myGreeter are highlighted. Change the “my” to “world” in one of them and you’ll see that they both are changed to worldGreeter." the word “both” should be changed to “all”, since there are now three instances of “myGreeter” instead of two. Also, figure 6.3 is not showing the new [myGreeter release] statement. | 2008-10-06 | ||
93 | TYPO | The output “Hello, world. | 2008-10-06 | ||
64 | ERROR | The implementation of webView:didFinishLoadForFrame: should be [self resetButtons]; because we haven’t modify yet the resetButtons method. | 2008-10-26 | ||
68 | ERROR | There doesn’t seem to be any WebViewProgressEndedNotification in XCode 3.1. Looks like it’s been renamed to WebViewProgressFinishedNotification. | 2008-10-06 | ||
71 | SUGGEST | FWIW: the “initial value” in IB 3.1 (build 670) (which we’re setting to 0.0) is called “Current:”. | 2008-10-26 | ||
71 | SUGGEST | I found the discussion in section 5.9 awkward and disruptive here. We’re right in the middle of doing the load indicator and notifications, and suddenly we’re called back to section 5.2 and delegates. Yes, the final two paragraphs deal with notifications, but we haven’t even seen selectors in action yet. Maybe move the first section to right after 5.2 and the bit on selectors to after 5.10? | 2008-10-26 | ||
74 | SUGGEST | You can tersify (?) the solution even more by dispensing with clearLoadIndicator; and the corresponding notification. Set hidden to NO on the update, and the estimated progress notification will take care of resetting the value of the indicator to 0.0 (or close enough as to make no difference to the naked eye on the pages I tried). If you wanted to make absolutely sure, you could set the value of the loadIndicator to 0.0 before hiding it on progress finished. | 2008-10-26 | ||
78 | SUGGEST | Re: “More concretely, here is your header file for the Greeter.” Looks like the listing for Greeter.h should follow this line. Also, FWIW, the download references Greeter2.h, not Greeter.h. Same for Greeter2.m / Greeter.m. | 2008-10-06 | ||
46 | TYPO | In the second sentence of the first paragraph after the SimpleBrowserController1.h code listing, the word “interract” should be “interact”. | 2008-10-06 | ||
64 | SUGGEST | In your first mention of the webView:didFinishLoadForFrame: delegate you pass the sender to resetButtons before you’ve discussed removing the myWebView outlet on the next page. Shouldn’t: - (void)webView:(WebView )sender didFinishLoadForFrame:(WebFrame)frame { Really be: - (void)webView:(WebView )sender didFinishLoadForFrame:(WebFrame)frame { Before the “Clean Up” section? | 2008-10-26 | ||
83 | TYPO | In the third paragraph, I believe the word ‘seem’ should be ‘see’: “…they’ll seem your application as a memory hog.” | 2008-10-06 | ||
87 | TYPO | In the first paragraph, where you write “One of | 2008-10-06 | ||
90 | OK | Figure 6.3: Renaming a Variable appears in the wrong place. A better place would be down in section 6.8 where you write about renaming a variable. | 2008-10-06 | ||
90 | TYPO | “Choose Edit All in Scope. Both instances of myGreeter are highlighted. Both? There are three instances of myGreeter (the delaration, calling ‘sayHello’, and calling release) and all three are highlighted and changed | 2008-10-06 | ||
68 | ERROR | second paragraph of Section 5.7 Awake from Nib starts “Because you added your two controller objects to your nib,…” however we have only added one controller object so far - SimpleBrowserController. | 2008-10-06 | ||
70 | TYPO | replace out with our in the sentence “We could listen to notifications coming from any object-but we only want to respond to updates from out web view” | 2008-10-06 | ||
41 | TYPO | First para: " In WebView you can see the method | 2008-10-06 | ||
32 | SUGGEST | Second last paragraph on this page: Change Interface Builder Setting to not Flatten Compiled XIB Files. You’ll find that mentioned checkbox in the “Build” tab within the Project Info Window. | 2008-10-06 | ||
27 | SUGGEST | “Look This stumped me for a while, since I couldn’t find the build/Release directory. I think I finally found it by selecting SimpleBrowser under groups and files, bringing up the right button menu and selecting “Reveal in Finder” then expanding the folder in the finder where I found the build directory which has both Debug and Release subdirectories. Is this the right place? I think that the book could be clearer here. | 2008-10-26 | ||
16 | TYPO | second paragraph: … this Simple Browser example, You’ll need … <= shouldn’t be capital Y | 2008-10-06 | ||
18 | TYPO | Second paragraph … that make sure you on the same line … <= you ‘are’ on | 2008-10-06 | ||
30 | TYPO | Second text para: … search for the string takeStringURLFrom:. you should … <= either URLFrom:, you or URLFRom:. You | 2008-10-06 | ||
30 | TYPO | last text para: to the destination the NSTextField object <= should be to the destination NSTextField object? | 2008-10-06 | ||
21 | TYPO | “It’s easy to get lose sight of the big picture…” | 2008-10-26 | ||
109 | TYPO | s/ApplicationGreeter.h/ActivityController.h/ | 2008-10-26 | ||
66 | TYPO | In the - (void)webView:(WebView )sender didFinishLoadForFrame:(WebFrame)frame delegate implementation, the last line that calls the resetButtons has an extra argument that doesn’t need to be there and gives up a compiler warning if it’s there. I have tried this on a few machines and running it with the sender gives me a compiler warning. It’s not needed. | 2008-10-26 | ||
108 | SUGGEST | Use objectForKey: instead of the valueForKey: (should be used only with KVC otherwise the reader might get confused). | 2008-10-26 | ||
33 | ERROR | First paragraph: “WebView object passed in as the sender” - wouldn’t the sender be the NSTextField? | 2008-10-26 | ||
42 | TYPO | Third paragraph, last sentence “…as is…” s/b “…as are…” Also (very minor suggestion), first paragraph, last sentence, “…its dual…” - counterpart might be a clearer word choice. | 2008-10-26 | ||
48 | SUGGEST | “WebView, in contrast, was a subclass of NSView which in turn was a subclass of NSResponder which is a subclass of NSObject” | 2008-10-26 | ||
12 | SUGGEST | “We start to think that OO is all about the objects.” Suggest start -> tend. Because it’s a sneaky recurring pattern of thinking. :) | 2008-10-26 | ||
14 | TYPO | Fig. 1.2 “Helpful tools” is still labelled incorrectly. It should be something like “Context Sensitive Help Menu” | 2008-10-26 | ||
21 | SUGGEST | “Note that Quit is not under the File menu as you might expect.” Do you need this footnote? Quit is not under the file menu in (almost?) every Mac app. | 2008-10-26 | ||
29 | SUGGEST | “using the Active Build Configuration drop down in Xcode if it is visible.” It’s only visible if you’ve customized XCode’s toolbar to include it. | 2008-10-26 | ||
93 | TYPO | You will also need to highlight the “[worldGreeter release];” line or the refactoring will try and return a pointer to a Greeter object instead of a void. | 2008-10-26 | ||
40 | SUGGEST | “If you click on the goBack method” Maybe something like this? “If you click on the goBack method (not the goBack: listed right below it)” | 2008-10-26 | ||
42 | SUGGEST | “appreciate the fact that you don’t have to think of what the true, false, and true refer to.” Suggest “think of” -> “recall” | 2008-10-26 | ||
43 | SUGGEST | Starting with “Here’s more than you need to know.”, begin a new paragraph. | 2008-10-26 | ||
46 | SUGGEST | From looking at their site, “Second Life” is probably ® | 2008-10-26 | ||
46 | OK | For some reason, page 46 doesn’t have a blue footer in the generated PDF. | 2008-10-26 | ||
52 | SUGGEST | It’s more natural to name figure 4.3 “Actions and Outlets” because that agrees with the order of the diagram, and the order introduced in the text. Consider renaming section 4.3 as well. (And watch out, it’s mentioned previously.) | 2008-10-26 | ||
52 | OK | I see you mix the order of the words Actions and Outlets in other pages, and if you decide to make them all consistent, you’ll need to check for it throughout. | 2008-10-26 | ||
12 | OK | “that Smalltalk is not only NOT its syntax …” - double “not”. | 2008-10-26 | ||
56 | SUGGEST | I had trouble here: “Remember that the web view is going to need to send a message back to the textField to get its string value.” Suggest something like this: “Remember that the textField will send a message to the controller when ”Enter" is pressed and then the web view is going to need to send a message back to the textField to get its string value." | 2008-10-26 | ||
108 | OK | Figure 7.2 is not exactly the correct display. Because the “updateConsole:” method has the “\ | 2008-10-26 | ||
92 | OK | Putting a picture of code (Figure 6.3) in the middle of a code listing could be confusing, but at the very least is a break in train of thought. You might consider moving the figure to the bottom of the page. (Dave says: we do layout at the very end) | 2008-10-26 | ||
95 | SUGGEST | When adding initWithName to Greeter.m, adding the following to Greeter.h will prevent compiler warnings about the possibility of initWithName not being defined: - (id) initWithName:(NSString *) name; | 2008-10-27 | ||
58 | SUGGEST | Section 4.7 is broken out as an exercise, but section 4.9 begins with an exercise that isn’t broken out into a section. One suggestion: “You should complete the exercise before reading on as the solution is -> Try implementing this on your own before reading on as the solution is | 2008-10-26 | ||
59 | TYPO | Need a comma: Before you move on click on -> Before you move on, click on | 2008-10-27 | ||
63 | SUGGEST | Look in the “Tasks” section of the WebView docs and you will see ten -> Look in the “Tasks” section of the WebView docs under “Getting and Setting Delegates” and you will see ten | 2008-10-26 | ||
66 | ERROR | I agree with Kent Fenwick’s comment, you don’t need sender in resetButtons:sender at this point. When you take it out, you should mention putting it in on page 68. | 2008-10-26 | ||
73 | SUGGEST | Set the Add: Use the Size Inspector (and Cocoa Simulator) to set appropriate Autosize settings. | 2008-10-26 | ||
83 | SUGGEST | " Set the Active Build Configuration to “Release” This isn’t done in the Project Settings dialog, that only changes settings for the release build. You change this from the XCode toolbar. Suggest a new paragraph here, and change it to: “From the XCode toolbar, set the Active Build Configuration….” | 2008-10-26 | ||
93 | ERROR | “Both instances of myGreeter are highlighted.” There are three. Somehow we’ve lost [myGreeter release] from page 92. This affects Fig 6.3 and 6.4. | 2008-10-26 | ||
94 | SUGGEST | “You don’t have to make any changes to the header file.” Throughout, I’ve been confused on what methods you have to declare in the header file, and what you don’t. | 2008-10-26 | ||
98 | TYPO | Controller to go with ourGreeter class Model. Need a space: our Greeter | 2008-10-26 | ||
104 | TYPO | scoffolding -> scaffolding | 2008-10-26 | ||
93 | 93 | ERROR | You show how to use XCode’s Refactoring capabilities here. The only thing is you refer to a C-style function as a method. In some languages, such as Ruby, there is little or no distinction between functions and methods and in many cases it is a semantic argument. C-style functions have the syntax: Strictly speaking, In Objective-C, a method is a message that can be sent to an object. A function is still just an old C-style function, a.k.a. subroutine. | 2008-10-26 | |
90 | SUGGEST | Generally, there is an ongoing debate as to what is a proper Objective-C init method implementation. One thing to consider is that there is no need to explicitly return nil. It might be worthwhile to note that typing init and using XCode’s auto-completion will provide an Apple-sanctioned init definition to start with. If you vary from that, you might want to include some discussion in the book as to why and what for. | 2008-10-26 | ||
109 | TYPO | “First declare a couple of variables we’ll need in ApplicationGreeter.h.” | 2008-10-26 | ||
14 | TYPO | Last paragraph in section 1.3: | 2008-10-26 | ||
80 | TYPO | Second Paragraph: In this iteration of “Hello, world” we’re going to define a new class but | 2008-10-26 | ||
66 | TYPO | - (void)webView:(WebView )sender didFinishLoadForFrame:(WebFrame)frame { Should not pass sender in the final method. | 2008-10-26 | ||
106 | TYPO | Second paragraph begins with “As a last step we’ll implement the updateConsole: method that get called when either notification is received”. Should read: “As a last step we’ll implement the updateConsole: method that gets called when either notification is received.” | 2008-10-27 | ||
30 | SUGGEST | In the discussion about adding a reference to the Webkit framework, if readers have dorked around with XCode (like I had), they may need to be pointed to /System/Library/Frameworks to find Webkit.framework. A simple note on this page would probably be worthwhile. | 2008-11-20 | ||
55 | TYPO | From the “Joe asks” block: “A warning could be a note at compile time telling you that you’ve sent a message to an object that MAY didn’t declare a method with that signature.” Probably don’t need may in this sentence. | 2008-11-20 | ||
57 | SUGGEST | In section 4.5 the reader is using Interface Builder. Section 4.6 uses Xcode to add the code to the SimpleBrowserController.m file. It might be good to mention that the reader needs to switch back to Xcode as an inexperienced Cocoa developer may get confused here. | 2008-11-20 | ||
112 | 112 | SUGGEST | You mention here a good caveat for those new to Cocoa; inherited methods are not listed in the docs of any given class. The fact that so many methods are somewhat predictable, after getting familiar with the design patterns of Cocoa, that it becomes easy to begin looking for useful methods by method prefix or return type. | 2008-11-20 | |
52 | TYPO | Misspelled as “Controler” in image at bottom of page. | 2008-11-20 | ||
108 | ERROR | I could be wrong here, but it seems with the XCode included with Leopard, there is no “Wrapping Text Field”; instead there is only a “Text View” and the normal text field. It is not too difficult to figure out how to change things to make it work with the Text View, but you may want to mention this. | 2008-11-20 | ||
52 | TYPO | “Controler” should be “Controller” in the image. | 2008-11-20 | ||
56 | TYPO | I found the “Isn’t that cool?” out of place here, I didn’t know what you were talking about until I read the next sentence. Perhaps move it after the 2nd sentence. | 2008-11-20 | ||
60 | TYPO | I originally missed the one line about moving the resetButtons method above the other methods and spent quite a while trying to figure out why it wouldn’t compile. Can you make a bigger deal of this, and explain why the method needs to be before the others? If resetButtons was declared in the header file would that still be the case? It’s particularly odd for java programmers where this is not needed. | 2008-11-20 | ||
62 | TYPO | My SimpleBrowserWithController always crashes after I enter the 3rd URL with “status 2”. How can I debug? I tried looking up “status 2” in the docs, and it was completely useless. | 2008-11-20 | ||
62 | SUGGEST | Sorry, the error I previously reported for this page was actually because I happened to pick some web pages (each on the 3rd URL!) for trying with SimpleBrowser that cause it to crash (Amazon and Yahoo both do this). But that brings up the question of debugging - Perhaps an add on section to this chapter to 1) have the user do something that will cause a crash and 2) some simple debugging techniques to help, eg. how can I add some basic print statements to the code that will print helpful stuff to the console? What other debugging techniques might help if I’m running into trouble? It seems like we’re far enough into the programming at this point that it would be helpful. | 2008-11-20 | ||
18 | TYPO | Building the Recipe Source List This should be “upper left corner” | 2008-11-20 | ||
18 | ERROR | Sorry, the error on page 18 was for a different book | 2008-11-20 | ||
64 | SUGGEST | I find 5.1 very confusing - “You don’t subclass a button to assign its target and action”. Why did you say that? It didn’t occur to me that I would need to, and so saying that makes me wonder what I’m missing. The next paragraph also is confusing. The “On the other hand” point doesn’t make sense to me as being related to the first paragraph, so the fact that you say “on the other hand” seems odd. And I’m not sure what this has to do with buttons and the problem I’m trying to solve with this chapter (ie, getting the back and forward buttons to work). I feel a bit lost by the 3rd para. And in the 4th para, I think you’re trying to explain what delegation is, except that it feels like you are telling me what delegation is using “delegation”. I think delegation is a really important concept and deserves a picture and a better explanation. The explanation here is all confused with UI responses to close actions and buttons, etc. At the end of 5.1, I really have no idea what a delegate is, and I’m confused about what I’m trying to do. | 2008-11-25 | ||
65 | SUGGEST | Section 5.2, second paragraph. “Start by connecting the delegate…” This made no sense to me. What delegate? Probably because I am still very confused about what a delegate is and how it relates to the web view. When you say “Select the web view” - it’s not actually clear to me at this point what you mean. I figured it out, but it wasn’t obvious. It also took me a while to figure out that the didReceiveTitle:forFrame wasn’t an instance method on the web view, but on the web view frame load delegate. I hunted around in the docs for a while looking for it in web view, before clicking on frameLoadDelegate under Getting and Setting delegates, and then clicking on WebFrameLoadDelegate in the definition and then finding the instance method there. I think it would be really helpful to explain all this in a lot more detail because the fact that it’s described as “webView:didReceiveTitle” makes me think that it should be a method on webView. And how do you know when something is a method on a delegate or on the real thing? How do you find out so when you are looking in the docs you know where to look?? And “You can see that the message we receive also includes the title as a parameter…” - how can I see that? I don’t see it until I read the next page and see that title in a parameter in the method signature, which you say you copied from the WebFrameLoadDelegate protocol documentation, but you haven’t told me how to find this. At this point, I should point out that one of the things I struggle with the most when it comes to Cocoa and Objective C is how do you know what you need and when? It seems a complete and utter mystery to me and it’s why I’ve never learned cocoa better (because there are few books on the subject and they all seem to gloss over this point). As a relative “newbie”, I find this incredibly frustrating about Cocoa. The framework and Obj C language seem so incredibly powerful and interesting and yet it’s like you have to know all about it in order to understand it and there is such a steep learning curve and no great documentation about how to know this stuff. Argh! I would love it if your book could help with this… There is (from what I have seen) NO book and NO documentation and NO online resource that addresses this effectively. | 2008-11-25 | ||
66 | SUGGEST | Top bullet: “We don’t need to add anything to the header file”. Why? Is it because (with my Java hat on) we’ve essentially just made SimpleBrowserController implement the interface of the delegate? Even so, it doesn’t seem right to me that there is no indication in the code that somehow I’ve done this, either in the header by declaring the methods, or in the class file by showing that it’s now a delegate. | 2008-11-25 | ||
66 | SUGGEST | Sorry, more on the previous entry - if there is no indication in the code for a class that it’s acting as a delegate, how I can know by looking at some code that it is indeed doing so? | 2008-11-25 | ||
81 | TYPO | Typo in the NSLog statement in the sample code. “Hellow, world” should be “Hello, world” | 2008-11-25 | ||
81 | TYPO | Keyboard shortcut for Build & Go is command-return, not option-command-return as stated. | 2008-11-25 | ||
66 | TYPO | Then you just ask this window to set it’s title - it’s should be its. | 2008-11-25 | ||
95 | TYPO | bottom of page: “…pull out these two lines into a seperate function.” - should be “three lines” (there’s a third line of code at the top of the next page) | 2008-11-25 | ||
52 | TYPO | Seriously anal, but there are two different dashes (an n-dash and an m-dash, I think) in the bulleted list after Actions and Outlets, respectively. | 2008-11-20 | ||
71 | SUGGEST | What do you mean by “template” code in the text just beneath the code on this page? Is there a special meaning to template? I would suggest that if it’s important for me to know what a template is right now, then go ahead and explain it, otherwise, take “template” out and explain it later. | 2008-11-25 | ||
72 | SUGGEST | The bullet item “The notification object is passed in as the method’s single argument.” makes me wonder if there is something missing from the code. I don’t see where or how we are specifying the “notification object” in the example code. It feels like there is something missing between the line that has “selector” and the line that has “name” - this list item seems to correspond to that line, which would be a way to pass in an object. ??? | 2008-11-25 | ||
72 | SUGGEST | What’s the difference between a “notification object” and the “object whose notifications I am interested in”? | 2008-11-25 | ||
72 | TYPO | In 5.7, 2nd para, 2nd sentence. “They” is unclear. In the previous sentence, you mention the second controller object (an “it”) and the nib (also an “it”). Thus, I’m not at all sure what “They” is, so I am not sure what is part of the object graph. | 2008-11-25 | ||
72 | SUGGEST | 5.7, 2nd para, 3rd sentence. “the basic pattern” for what? Very confused about what this is. This whole second para feels like it should be expanded a lot with a lot more explanation about what we’re talking about, and make it make sense in the context of “registering for notifications before the user takes any actions” which is what I’d expect given the first para of the section. | 2008-11-25 | ||
73 | SUGGEST | Why do we need a second controller? Could the SimpleBrowserContoller also do the work we’re putting into the LoadIndicatorController? (just a question that came into my mind when I saw 5.8). | 2008-11-25 | ||
75 | SUGGEST | After I changed the name of webView to pragWebView, I was not able to build and go at this stage, because I get two build errors. They appear to be in LoadIndicatorContoller.m, and one error that I found says: syntax error before WebView. One question I have at this point (other than what is missing in LoadIndicatorController such that it won’t compile), is this: I had SimpleBrowserController.m open when I did build and go as instructed in the book text, and other than the status at the bottom of XCode that I had two errors, there was nothing in the interface that indicated where those two errors occurred. So I had to click through all my .h and .m files to find it. If I had a lot of code and/or the files were long, that would be a pain in the you know what! Is there a way to turn on something in XCode so the files that contain errors are highlighted? Or see a list of the errors so I can click on them and jump to the corresponding file? Second question: when I click on the error in the file, it just closes it. I was hoping it would get me more information about the error. Is there a way to get more information on errors? | 2008-11-25 | ||
75 | SUGGEST | After changing the name back to webView from pragWebView, I build and go and still get the error mentioned in the previous errata. I didn’t do anything to change this file after creating it following the instructions in the book. | 2008-11-25 | ||
75 | SUGGEST | Oh I just figured it out, I didn’t link to the web kit. Might be good to have a reminder! :-) | 2008-11-25 | ||
75 | SUGGEST | I think it would be great to have a reminder of what the difference is between goBack and goBack: - at this point I’ve long forgotten what the distinction is and we haven’t really used that distinction anywhere yet. | 2008-11-25 | ||
76 | SUGGEST | The para beginning, “There are two other places…”. Can you just give an example of a notification set up here? As a newbie, no, I’ve never seen sample code like this (or if I have, I am not sure and am not sure what you’re referring to), and two, since we haven’t actually done the “passing the notification name in” yet, it’s very hard to understand what you’re talking about here. Showing an example, or talking about this after you’ve shown the code we’ll use to do this, would be better I think. | 2008-11-25 | ||
78 | SUGGEST | Couple of things on this page: | 2008-11-25 | ||
80 | SUGGEST | At the bottom of the page you say “stop the tasks from within XCode” but you haven’t told us how to do that. | 2008-11-25 | ||
81 | SUGGEST | Given we didn’t use main.m at all in the previous example, I think it would be helpful to have something in here about main.m - what it is, why we didn’t need it before, what it’s used for, why we need it now. Also, I think it would be helpful to change the order of the list of items about the console so that “Show the console” is first. When I did the RUn > Clear Console, nothing happened. I didn’t see anything until I did Show the Console. And finally, will most programmers, like me, find it completely odd that strings require an “@” in front of them? For programmers coming from Java, and probably other languages, I think they might. Perhaps a word about what that is and why we need it? | 2008-11-25 | ||
82 | SUGGEST | 2nd para on this page is very confusing, suggest rewriting. | 2008-11-25 | ||
83 | SUGGEST | Question: why does the call to sayHello not use the “:” at the end, as in [Greeter sayHello:]?? Question: why do we need to import Greeter.h since the files are in the same “package” (in Java speak)? | 2008-11-25 | ||
84 | SUGGEST | Nice feature with the line numbers - maybe an aside box telling us how to turn on line numbers in Xcode? | 2008-11-25 | ||
86 | ERROR | When I navigated to HelloWorld/build/Release/, all I saw was: HelloWorld (no extension) I didn’t see: HelloWorld/build/Release/HelloWorld.app as described on this page. | 2008-11-25 | ||
86 | SUGGEST | It wasn’t clear to me when the “leak had been reported”. Is it when I see the red triangle appear in the “leaks” instrument? Maybe a little more info about what to look for, or a screen shot would be great here. | 2008-11-25 | ||
87 | SUGGEST | Oh! Guess I should look ahead before writing a suggestion, I see the memory leak screen shot on the next page. Oops. Perhaps a reference to the screenshot in the text?? | 2008-11-25 | ||
88 | SUGGEST | I think the example at the bottom of the page is worth expanding a bit. Given how tricky reference counting can seem to people used to languages with garbage collection, or dynamic language, or even pointer-based languages, it would be helpful. So show the entire code for a situation where you’ve created an object and now need to set it, and step through it carefully. The memory management piece is an area of teaching I think bears repetition to make sure we truly get it. | 2008-11-25 | ||
91 | SUGGEST | I’d like to be able to try this sendBackAGreeter code, but I can’t figure out where to put it. If I put it in main, I get an error saying it needs to be inside an @implementation. Main is weird. It’s not inside an implementation and I just realized I have no idea why. If I leave off the “-” in front of the method (so it looks like main) then I get a whole host of errors I don’t understand. Would be nice to expand this whole example and show it working with the previous Greeter example and along the way explain: how to put another method in main, why main isn’t in an implementation block, etc. | 2008-11-25 | ||
91 | SUGGEST | The following text: Every object has an isa variable that points to the object’s class. makes absolutely no sense to me. Why did I need to find myGreeter’s class? When did I do this? How does this relate to myFoo? Why is it important in understanding alloc? | 2008-11-25 | ||
111 | TYPO | Last sentence on the page: “The docs contains in depth descriptions | 2008-11-20 | ||
92 | SUGGEST | I’m really having trouble following the paragraph beginning with “Let’s set the value…”. Let’s set the value of what? I find out in the next sentence, but it makes it harder to read. Would be good to remind me exactly what “init” does if we’re going to implement our own version of it. In the second to last sentence of the para, I’m not precisely sure what “it” is. Also on this page, you use “template” again. I’m confused about template and protocol and I’m not sure that you’ve explained them? At least not to the extent that I really get what they are. | 2008-11-25 | ||
94 | SUGGEST | Joe / Beth asks - do we have to implement dealloc if we implement init? Or does the built in dealloc still get called? If we don’t implement dealloc, could we put the release in the sayHello method? | 2008-11-25 | ||
121 | TYPO | First paragraph: “…drag a Custom View from the Library into your main menu.” Should be “…from the Library into your main window.” ? | 2008-11-20 | ||
132 | ERROR | Method is referred to as initializeIconView in the text, but is depicted in the screenshot as -initializeIconAndView | 2008-11-20 | ||
132 | TYPO | Last sentence on page, “create instantiate” should be “create and instantiate”? | 2008-11-20 | ||
44 | SUGGEST | Section 3.6; | 2008-11-25 | ||
53 | SUGGEST | It might be worth pointing out that IBAction and IBOutlet compile to nothing, but are used be Xcode to tag outlets and actions for IB. | 2008-11-25 | ||
61 | SUGGEST | Regarding the resetButton method. If you cover Categories later in the book, you could refer back to here as an example of when to use a private category. | 2008-11-25 | ||
95 | SUGGEST | I’d suggest making sure you don’t get page breaks in the middle of code if at all possible. | 2008-11-25 | ||
96 | TYPO | “Select those two lines” should be “Select those three lines” I think. | 2008-11-25 | ||
97 | SUGGEST | I think the para that starts “Note in line 13…” needs a little bit more. This also gets back to an earlier suggestion that it would be helpful to understand what “main.m” is - it’s not a class or object in the same sense that the other classes we’re creating are, so what is it? If I want to use [self greetTheWorld] I can’t (I tried) - presumably because main is not a class. I feel like the last sentence just leaves me hanging… Sort of related question - can methods in objects be declared and used in any order? It’s clear that greetTheWorld() needs to come before main. But what if I had a class and put the method declaration (I don’t think that’s the right word for it though) in the .h file, could I then call it even if the method is implemented below the method I’m calling it from? Looking back at SimpleController.m, I had to put resetButtons above the method it was called from but I didn’t declare resetButtons in the .h file. Why is that??? If I had declared it, would I be able to call it even if it’s implemented below the other method? | 2008-11-25 | ||
97 | SUGGEST | The sentence “If we could only reset the greetee we could greet anyone we want”. I don’t know what that means, mostly because I don’t know what “reset” means in this context. | 2008-11-25 | ||
98 | SUGGEST | In the solution, where you describe initWithName, I think it is really important that you explain the [name retain] bit. This is really the first time we (as students) have used retain like this and it’s confusing! At least it is for me - I didn’t know to do this in my solution until I saw your solution. I get why now, but wouldn’t have thought about it on my own, and having another reminder of what is going and why we do this here would be really helpful. [Note from my HF self - repetition is key to learning! :-)] | 2008-11-25 | ||
99 | SUGGEST | I think this part would be a lot more clear if you just used the set and get with greetee instead of foo. Foo is too abstract and meaningless - I have to do too much work in my brain thinking about foo which is distracting from the getter and setter parts. So if you just go ahead and use setGreetee or setName or something all the way through, I think that will make this example a lot more clear. | 2008-11-25 | ||
99 | SUGGEST | Also on this page, at the top (actually, the para that starts on the page before) I need a little more connection between the sentence ending “… is exactly what you want” and the last sentence. You’re leaving too much unsaid here. Basically you are talking about two different ways to get values into properties in an object right? So let’s just come and be much more explicit about it. I had to read that para twice and really think hard to make sure I was getting what you were trying to say. Perhaps it’s just the way it’s written or perhaps it’s the paint fumes in my house at the moment, but I thought this was confusing on the first read. | 2008-11-25 | ||
99 | SUGGEST | In the sentence “Or, if you are using at least Objective C 2.0…” - I’d suggest saying “Or, if you are using Objective C 2.0 (or greater) …” It might be a little clearer. Also in that sentence, the “syntactic sugar” myGreeter.foo is equivalent to [myGreeter foo]? Are you introducing this here because it only works with getters and setters? If so, then say that right up front rather than waiting until later in the page. (Not the part about declaring in the header file, but just the syntax equivalence and the fact that it only works on getters and setters). Do you use this? It seems odd to me… like too much syntax. I’d rather just use the same syntax as on other method calls so I don’t have to try to parse both if I’m reading a file that has both types. (Not suggesting you take it out, just curious). | 2008-11-25 | ||
99 | SUGGEST | Why aren’t all methods declared in the header file? At this point I’m really confused about what needs to go in the header and what doesn’t. We didn’t put the SimpleBrowserController resetButtons method in there. We did put initWithName in there. And now you’re saying that we have to put the getter and setter in there if we want to use the dot syntax… very confused… | 2008-11-25 | ||
100 | SUGGEST | I’d suggest removing the phrase “stripping the time code and identifiers as usual” from that sentence at the bottom of this page. | 2008-11-25 | ||
102 | SUGGEST | I read the first half of the exercise on this page, but had to skip forward to the solution as I got stuck (I got stuck on the controller - I created an NSObject in IB, but when I “saved” I couldn’t find it in XCode). So when I got to the solution, the first sentence made no sense to me. So you might want to repeat some information here so it makes sense whether you skip part of the exercise or not. Also, the second sentence needs more explanation. Why do we not need the init methods anymore??? And I’m a little unsure why the solution starts with the reduction of code. I’d expect to start with a talk through of adding the Controller. Seems like the code reduction could come towards the end? | 2008-11-25 | ||
103 | SUGGEST | I don’t understand the paragraph beginning “We could reduce the footprint further…”. Eliminate what instance variable? I think since we’re not changing it, don’t even mention it. Or, show it. | 2008-11-25 | ||
103 | SUGGEST | Ah, I am thinking maybe I should have created GreeterController in Xode instead of IB? I’m confused. I think elaboration on this point is needed. I thought we could create NSObjects in IB, but maybe I’m misremembering or confused about what we create where. I’ll try it in XCode…. | 2008-11-25 | ||
103 | SUGGEST | Noticing in XCode that all the classes I created (main.m, Greeter.m, Greeter.h) all went into a folder called “Other Sources”. What is that? Why not in classes? But when I went to create GreeterController it went in classes. What’s the deal with folders? Does it matter which one the classes are in, what the folders are called? Can I create my own folders? What’s the advantage of folders? In what situations would they be important? | 2008-11-25 | ||
103 | SUGGEST | I think the solution should repeat a bit from the exercise, ie step me through what I’m doing when I’m adding issueGreeting for instance and remind me that it should be hooked up to the text field. I think a little repetition here will really help. Otherwise, I have to go back up to the exercise to remember what each thing is. | 2008-11-25 | ||
102 | SUGGEST | Why are we turning on automatic garbage collection? | 2008-11-25 | ||
105 | SUGGEST | Suggest removing first sentence of this chapter and modifying the first para. That wasn’t boring to me, it was interesting and challenging. | 2008-11-25 | ||
128 | OK | Footnote 3 at bottom of the page is formatted so that it is justified to both the left and right margins, causing the words to be spread across the page, and link address runs off the right side of the page. (Dave says: we handle this kind of thing during the layout phase at the end) | 2008-11-25 | ||
18 | SUGGEST | At the beginning of section 2.1, you write “As we bounce back and forth between IB and Xcode …”. I suggest you make a link between the acronym IB and the complete name “Interface Builder”. Not really mandatory, but it is cleaner IMHO. | 2009-01-05 | ||
86 | OK | I’m using XCode 3.1.1 and Leopard on a 15" macbook pro and I can’t successfully build the “leaky” test. I’ve since finished the chapter and was able to “see” the use of Instruments as I finished your additions and was using Instruments after every addition. But, the first “leaky” release would not build successfully and Instruments would get an error with the “ignore-or send to Apple” dialog. GDB prior to even using Instruments would show the leak. I got the point but the steps didn’t work as written. (Daniel says: I can’t reproduce this) | 2008-12-04 | ||
13 | OK | In: Note the capitalized “NOT”. | 2008-12-04 | ||
105 | OK | I’d remove the sentence “The Cocoa frameworks commonly share information using…” from the end of the last para before 7.1. It seems out of place and raises too many questions at this point - better saved until you actually start talking about dictionaries. | 2008-12-04 | ||
105 | OK | I’d suggest repeating the previous notification method call from the previous example at the beginning of 7.1. It’s been long enough I’ve forgotten the details and it would be really helpful to see it again to refer to as you go through the explanation. | 2008-12-04 | ||
106 | SUGGEST | I’d suggest adding a list of the “three instance methods” for NSNotification - first sentence on the page. Otherwise I’m wondering if I should already know what those are? No, I could look them up in the documentation, but it would be easier for you to just name them right there. | 2008-12-04 | ||
109 | SUGGEST | A few things about the code not addressed in the explanation. | 2008-12-04 | ||
67 | TYPO | “5.4 Solution:Updating the URL and Setting Buttons”: a space is needed between “Solution:” and “Updating”. | 2008-12-04 | ||
110 | OK | “those awkward names” - probably worth repeating what they are here since you haven’t referred to them in the text. It took me a second to know what you were referring to. | 2008-12-04 | ||
110 | SUGGEST | “We’ll also ignore…” Rather than thinking about what we’re not going to do, can you reword to say something like “Instead of printing the entire dictionary to the console, we’re going to just pull out the name of the application which we can get from the dictionary entry NSApplicationName” or something like that. | 2008-12-04 | ||
11 | TYPO | the cocoa-dev link doesn’t work | 2008-12-04 | ||
91 | ERROR | Foo * myFoo; To keep with this, you should also, to: | 2008-12-04 | ||
73 | TYPO | The footnote should read: “No message is sent to objects that don’t implement this method…” | 2008-12-04 | ||
110 | SUGGEST | NSWorkspaceDidLaunchApplicationNotification and NSWorkspaceDidTerminateApplicationNotification are already defined as external strings inside Cocoa, and you’re supposed to use the key’s names, like this: | 2008-12-04 | ||
125 | TYPO | launchColor = [NSColor greenColor]; | 2008-12-04 | ||
72 | TYPO | third paragraph has a word missing from the following sentence: “Sometimes, though, you’ll a class has multiple delegates.” I assume it should be “Sometimes, though, you’ll encounter a class has multiple delegates.” | 2009-01-05 | ||
45 | OK | Would you consider adding the chapter or some other identifying reference to the appropriate section for footnotes referring to Apples Objective C 2.0 docs? Would be really helpful, reduce look up time. E.g. For more information read Apple’s “…”, “Selectors” chapter, section “Methods and Selectors” (or something similar). Although I guess the downside is if Apple changes their docs you’d have to change the book. Maybe have this info online? | 2009-01-05 | ||
70 | TYPO | In the last paragraph, WindowHelper.h is spelled without capital H, as Windowhelper.h | 2009-01-05 | ||
66 | SUGGEST | I’m not sure how you came to know that [sender window] will give you the parent window. I don’t see this in the Apple documentation, you just kinda jumped to this conclusion. A few more bread crumbs in this area would be nice. | 2009-01-05 | ||
65 | SUGGEST | Last sentences read better in Oct release: “two mechanisms of capturing and responding to these otherwise invisible events. Delegates will let us customize behavior for a class without creating a subclass. Notifications let us (and anyone else) listen for updates that we might want to respond to.” | 2009-01-05 | ||
82 | TYPO | In the 4th bulleted item that begins ‘The object refers to’ the second sentence has an extra comma. | 2009-01-05 | ||
106 | TYPO | 2nd sentence says “Select those two lines…” when it should say “Select those three lines…” | 2009-01-05 | ||
145 | SUGGEST | Please describe the .h changes before the .m changes. I was wondering if I missed the step where the NSImageView gets moved from the controller to the view, and I looked all the way back before looking to the front. Sorry, the book got me used to being spoon-fed the changes :) P.S.: Thank you so so much for taking the time to write this book! | 2009-01-05 | ||
170 | SUGGEST | I got away with less book-keeping by creating both view controllers, relaying notifications to them all the time, and using replaceSubview to swap the views from the window. I’m not saying it’s better than your solution, it’s just an alternative. | 2009-01-05 | ||
98 | TYPO | The sentence: should be: “The reference count is set to one when alloc is called.” | 2009-01-05 | ||
103 | TYPO | In the “Joe asks”, there should be a space between the self and the = for parity with the code below. Otherwise, your prompt “At first it appears we may have typo in” is actually true! | 2009-01-05 | ||
121 | TYPO | Need to capitalize “english” in: “We can build a simple example of how you might use one that uses the notification name as the key and the more accessible english ter ms as the values.” | 2009-01-05 | ||
166 | TYPO | “we set the window to be resize to just surround the view we’re passing in.” “resize” should be “resized”? | 2009-01-05 | ||
142 | SUGGEST | This is the first time we do an if statement and an equivalency test in the book. It would be nice to discuss the way equivalency works in Obj C — for instance, why are we using isEqualTo here instead of == ? | 2009-01-06 | ||
154 | TYPO | There is a typo in the string describing the project name of MainWindow.xib ““HellowApplicationNibs.xcodeproj”." Should read HelloApplicationNibs.xcodeproj". I made the same typo when creating the project. | 2009-01-05 | ||
163 | TYPO | BorderedIconView.h misses declaration of launched: and terminated: which generate build warnings. Same with MessageField.h on page 162. | 2009-01-05 | ||
160 | SUGGEST | Need to specify that you should drag the NSObject for HelloApplicationNibsDelegate into the MainMenu XIB’s document window. Currently doesn’t say which XIB to use. | 2009-01-05 | ||
16 | TYPO | 1.5 In this book “This and the rest of the Introduction will be added as the Beta process continues.” … " will be added to as the Beta process continues." | 2009-01-05 | ||
100 | SUGGEST | In the first paragraph, there is a run-on sentence beginning with the double-negative “You can’t do nothing or you will have a memory leak…” This would be more clearly stated beginning with a positive statement and splitting it up into two sentences. ( “You must do something to avoid a memory leak. In case of…” ) I had to reread that sentence a few times to really get what you were saying. | 2009-01-05 | ||
185 | TYPO | “It’s safer for you to choose a suffix for your methods” —> do you mean prefix? | 2009-02-24 | ||
71 | TYPO | Last sentence before paragraph 5.6 title should read “These are both called too late […]” | 2009-02-24 | ||
85 | TYPO | “…what language you come from, you’ve should know not…” “you’ve” should be “you” I won’t point out the irony that this is in the section called “Spelling Counts”. :D | 2009-02-24 | ||
98 | TYPO | “You can’t do ignore the reference you hold…” should be: “You can’t ignore the reference you hold…” The “do” is a typo. | 2009-02-24 | ||
29 | OK | I was unable to run the application until linking the WebKit.framework back in Xcode. This is the error I received: 1/11/09 7:58:45 PM SimpleBrowser[4308] * -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView) | 2009-02-24 | ||
70 | TYPO | 5.4 Exercise: Turning the background green: Should probably be: | 2009-02-24 | ||
80 | TYPO | I am not a native English speaker, but I would consider rephrase “_You will also may | 2009-02-24 | ||
98 | TYPO | Questionable grammatic practise: “You can’t do | 2009-02-24 | ||
171 | TYPO | first para, sentence “You should notice that the application runs just as it did | 2009-02-24 | ||
24 | TYPO | Third last sentence: That’s the the one with… Doubled the | 2009-02-24 | ||
113 | OK | dealloc for class Greeter is missing, so the instance variable greetee is never deallocated. As I write this, I discovered that you wanted us to turn on garbage collection (second last paragraph of 7.12, just above the code for main). Hm. Since this is an easy fix, I would recommend not to turn on GC, instead use the dealloc class method (in fact there is no ambiguity in this case, since it is obvious when dealloc has to be done). So I recommend to leave dealloc for Greeter in, and to add a dealloc method for the GreeterController like this: - (void)dealloc { [changeableGreeter dealloc]; [super dealloc]; } | 2009-02-24 | ||
114 | SUGGEST | The last paragraph on this page - I think you can lose the first sentence. | 2009-02-24 | ||
73 | TYPO | “Unfortunately, if you look in the WebView documentation. You have to I think this is poorly worded. | 2009-02-24 | ||
183 | TYPO | -(void) terminated: (NSNotification *) notification { | 2009-02-24 | ||
185 | TYPO | “it” should be “if” in the second sentence of the last paragraph on page 185: “What it there already are methods with those names?” | 2009-02-24 | ||
109 | TYPO | Existing text: “Here is the method we’ve added to main.m.” (talking about greetAnotherPerson) | 2009-02-24 | ||
16 | OK | I’m confused with page numbers referenced in Erratum. Currently I’m on page 16 of the PDF — none of the above Errata references reported for this page, show up on this page. Perhaps as errata is implemented into subsequent versions of the PDF, they should be deleted to help alleviate confusion. (Dave says: when fixes are made and a new version is released, then the errata disappear from the default list—you have to select the prior release of the book to see them) I like this concept of a BETA book! It should reduce the number of errors that often slip into first editions of a technical book. Sweet! | 2009-02-24 | ||
21 | OK | Update the graphic on PDF page 21 to match the project. The graphic shows a project window for “SimpleBrowser”, but we just created a new project called “UsingWhatsThere”. | 2009-02-24 | ||
96 | TYPO | Change sentence “The first is any prior versions of OSX.” to “The first is any prior version of OSX.” (First paragraph on the page.) | 2009-02-24 | ||
104 | TYPO | Change “Both instances of myGreeter are highlighted.” to “All instances of myGreeter are highlighted.” The term “both” implies two instances, and there are three in this example. (Third paragraph on page, right below the figure.) | 2009-02-24 | ||
214 | TYPO | “Now what can we’ll set the background color of our table by reading the defaults.” This sentence doesn’t make sense. | 2009-02-24 | ||
119 | TYPO | The code instructions in section 8.3 are not clear, as to what I should be adding/modifying to the existing code in ActivityController.m. To me, it would be clear if you were told to add the setUpNameLookup method; in the text, it mentions that this is a “code example”. To me, a code example is as stated: an example. I skipped over it, and then noticed that it was actually needed when I modified awakeFromNib. | 2009-02-24 | ||
145 | TYPO | The “initWithFrame” stub in my MessageView.m file is different from what you show in the example. I created my class file following directions. Is there a reason you modified the code to simply return the expected value? My guess is you didn’t ever plan to add any additional initialization code, and your example is the result of refractorization. | 2009-02-24 | ||
125 | SUGGEST | Slight suggestion: recommend that “#pragma mark” be bolded in black text instead of just “#pragma”. This will match the default color scheme of the Xcode 3.1 IDE. Great idea covering #pragma mark in the book. Thanks! | 2009-03-26 | ||
145 | SUGGEST | In 9.9 Solution: Prepare to Draw Text —- the step to delete the text field from our GUI window in Interface Builder is omitted from the solution steps. It instructs you to do this in 9.8 Exercise: Prepare to Draw Text. The solution would be clearer if it contained this step after modifying ActivityView.m to create and configure the MessageView subview. | 2009-02-24 | ||
148 | SUGGEST | Suggestion: For the footnote #2 on the bottom of the page, I suggest you have the user search on NSAttributedString(AppKitAdditions) in the developer documentation. The listed URL is too long to display correctly on a printed page. For the PDF version, you could still link to the URL from the suggested search text above. | 2009-03-26 | ||
129 | TYPO | “Again, as an example, this will return /Applications/iCal.app then iCal is launched or terminated.” | 2009-02-24 | ||
71 | SUGGEST | On page 48 note 2, the author assumes we are working with a new Project : “SimpleBrowserWithController” when implementing the SimpleBrowserController class. So it would probably be more coherent if “Close the WindowDressing project and re-open our SimpleBrowser project.” read Close the WindowDressing project and re-open our SimpleBrowserWithController project." instead. | 2009-02-24 | ||
155 | TYPO | “Why are their two endings?” should be “Why are there two endings?” | 2009-02-24 | ||
101 | TYPO | At the top of page, second sentence: “ending, it is a good to get in the habit” should be: ending, it is good to get in the habit OR ending, it is a good idea to get in the habit | 2009-03-26 | ||
169 | OK | In the paragraph after the code fragment, you say to create a new View XIB file, but you had said this before on page 168 under heading 10.10. | 2009-03-26 | When we didn't include it in the solution people complained so it's both places. | |
170 | TYPO | I may have missed it, but I think you fail to mention that the reader needs to open IB and set the window’s delegate to MainWindowController. | 2009-03-26 | ||
135 | SUGGEST | When describing how to put a custom view behind the image view and the text view you could also select both items using the cursor and then use the menu command Layout | embed objects in | custom view to do the same thing. | 2009-03-26 | ||
140 | TYPO | The formatting for the setToLaunch… setToTerminate… is a little messed up. | 2009-03-26 | ||
144 | TYPO | There is a space between the last bracket of (void) and the setImage (the last line of code). Inconsistent with the lines of code just above. | 2009-03-26 | ||
147 | TYPO | in the listing for ActivityView.h the setImage and setMessage declarations are not spaced the same way as the code above. | 2009-03-26 | ||
126 | OK | IMHO, I would drop the whole #pragma stuff, because the book is about Cocoa programming, not features of the IDE. The #pragma discussion - although describing a useful feature - helps not in understanding the chapter topic, which is “Working with dictionaries”. | 2009-03-24 | ||
167 | TYPO | Second Paragraph last sentence. Should be… “…between now and the end of this chapter.” | 2009-03-26 | ||
150 | TYPO | No a typo, per se, but the formatting of footnote #2 is horrible. The blanks between words are far to wide, | 2009-03-26 | ||
170 | ERROR | Not really an error but in the implementation of the MainWindowController you declare the currentViewController to be of type ActivityViewController, but when you declare it as a property, you give it the type NSViewController. Again, not an error, but I think it’s inconsistent. | 2009-03-26 | ||
194 | TYPO | Penultimate paragraph of section 12.4: ‘an’ should be ‘and’. | 2009-03-26 | ||
243 | TYPO | The first word in the last sentence on page 243 (PDF v1.06) reads “UpOfDown” instead of “UpOrDown”: “UpOfDown will need an outlet to connect to the Display and an action method.” | 2009-05-28 | ||
248 | TYPO | Typo on the middle of the page: “UpOfDown” should read “UpOrDown”: In addition, there might be another typo in the last sentence of that page (but I’m not really sure): “setName:” should read “setCount:”: | 2009-05-28 | ||
57 | OK | It is instructed that the user add It should also be noted that the user has to link the WebKit framework in the project. | 2009-05-29 | Exactly. That's the point of the explanation that follows. | |
56 | SUGGEST | Daniel, I’m not sure where you could place an expanded version of your explanation of Actions/Targets/Outlets, but I am sure that a more complete explanation of some key Objective-C underpinnings would be very useful up front in your book. Introducing NSControl would also be useful. Hillegass spreads out these CONCEPTS in short sections early in his book, It is also VERY important to continually illustrate that while some powerful results can be easily obtained working solely in Interface Builder, those same results can be obtained and sometimes MUST by directly coding in Xcode. How can your control-drag between NSOject protocols? And a little about the compiler would be useful. What do IBOutlet and IBAction “hints” do under the covers? Hillegass is pretty good at getting this basic stuff in early. Thanks in advance for any changes you might make along these lines. SteveJ | 2009-07-23 | Thank you and it was good talking to you at WWDC. These points will be mostly addressed in the Snow Leopard rewrite. | |
51 | TYPO | A sidebar CAN be very useful in SOME CASES, I think your explanation would flow much more smoothly, In other words, please remove the two paragraphs from the current sidebar and make them the first two paragraphs of Section 4.1. I skipped the sidebar on my first time through the text I recognize that it was my fault for skipping the sidebar, Excellent book. SteveJ | 2009-05-27 | ||
84 | TYPO | “… that is passed in when the notification sends the notification.” too many notifications! SteveJ | 2009-05-27 | ||
84 | TYPO | “… that is passed in when the notification sends the notification.” too many notifications! SteveJ | 2009-05-27 | ||
228 | OK | At the bottom of the page your code starts as: -(IBAction) getValue:(id) sender{ Scott Stevenson read this line of code and with a frozen face said that Since I hold Scott in great regard, Smile. SteveJ | 2009-05-29 | I agree in general that the accessor for foo should be foo and not getFoo. But this is not an accessor. I will look for a better name though for a future beta -- I too hold Scott in great regard. | |
230 | TYPO | The code at the bottom of this page should be for MyBookshelf.h #import <Cocoa/Cocoa.h> @interface MyBookshelf : NSObject { @end It should NOT be the code for PragBook.h header file SteveJ | 2009-05-28 | ||
192 | OK | At the bottom of the page it says: (I’m using Xcode / IB 3.1.2 on a Macbook Pro) | 2009-05-29 | ||
193 | OK | 12.2 Exercise … If you follow the steps prior to the exercise, there is no error when you “Build & Go”. (Xcode 3.1.2) Is there a parameter in IB that needs to be set, or un-set, to get the error to appear? | 2009-05-29 | I just refollowed the instructions and got the same error. Are you sure you've connected the delegate and data source? | |
23 | ERROR | The path for creating a new Cocoa Application is “Mac OS X > Application > Cocoa Application” You have the second path element written as “Applications” (Plural) | 2009-05-27 | ||
198 | TYPO | “So select the first column in Interface Builder and use the Identity inspector” is wrong, should be “use the Attributes inspector” instead (as per diagram on following page). | 2009-05-28 | ||
202 | SUGGEST | Instead of “Go back to the code as it was in Section 12.6” (and similar suggestions in earlier chapters where you show 2 ways of approaching a problem), perhaps introducing the Xcode snapshot functionality would be useful. It might be a lot easier than a big undo/re-edit cycle (just revert to an earlier snapshot). | 2009-07-23 | Nice suggestion -- I'll incorporate this into the rewrite. | |
117 | TYPO | The last sentence of the second paragraph of section 8.1 should probably read “…it stores it in a third object…” instead of “…it stores it a third object…”. | 2009-05-28 | ||
207 | TYPO | Sample code for HelloAppTableViewController.h is referenced in text, but (unchanged) code for HelloApplicationDelegate.h is shown. | 2009-05-28 | ||
131 | TYPO | In the third paragraph, “NSWorkSpace” should have the second “s” lowercased: “NSWorkspace”. | 2009-05-28 | ||
18 | TYPO | In footnote #4, the first two sentences have incorrect spelling of the word “its”. The usage denotes ownership, yet the spelling is the contraction of “it is”. Those lines should read: “One of the great selling points for Java was also its weakness. Its syntax was familiar.” | 2009-05-27 | ||
172 | OK | Please include the source code for ActivityViewController.h(m) . It’s only a few lines extra. Plus it will benefit those of use who are reading this box on an airplane who don’t have interwebs to download the source from! | 2009-05-29 | ||
222 | TYPO | Header file for Persistence/HelloAppTable18/HelloApplicationDelegate.h is shown (repeated from page 221-222), instead of Persistence/HelloAppTable18/PrefController.h (the details of which is referenced in the page text). | 2009-05-28 | ||
221 | TYPO | After “We’ll need to create a subclass of NSWindowController that will act as the preference window controller.” - suggest adding some clarification text for the reader to create a the new class files and name them “PrefController” (otherwise you don’t mention creation of this class anywhere in the section). | 2009-07-23 | ||
223 | TYPO | second last bullet point - " existing c nlasses" should be “existing classes” | 2009-05-28 | ||
226 | TYPO | Second paragraph - “When we got to the (as yet) unwritten chp.Tables everything changed” should refer to Chapter 12. | 2009-05-28 | ||
228 | SUGGEST | This is your first use of “@class” in a header file - without any explanation. As a result the implementation class of “MyBookshelf.m” needs to #import “PragBook.h” (not mentioned in the text). Is there a reason for this forward declaration vs. #import approach? | 2009-07-23 | Thank you -- that is being addressed in the Snow Leopard rewrite and will come much earlier in the book. | |
228 | OK | No mention of need for dealloc method to free myBook that was allocated in awakeFromNib (present in sampled code though) | 2009-05-29 | ||
236 | OK | Including the changes required in MyBookshelf.m to awakeFromNib (displayValuesIn is currently only shown) would be helpful here. Changes in the sample code are: -(void)awakeFromNib { | 2009-05-29 | I'm torn here. I include it in the sample code and don't want this to get in the way of the actual concept I'm teaching. If it continues to be a problem for you, please email me (daniel ) at (prag prog) | |
237 | SUGGEST | Perhaps reminding the reader to use the “Attribute Inspector” would be handy when setting identifiers for - “The first column has the identifier chapterTitle and the second column has the identifier pageCount.”. I just had a period of complete bafflement due to setting values due to incorrectly using the “Identity Inspector” (stack trace hilarity ensued). | 2009-05-28 | ||
267 | TYPO | last sentence - | 2009-05-28 | ||
24 | SUGGEST | 3. The name “nib” comes from the acronym for NeXT Interface Builder. Interface Builder and the framework that has become Cocoa was developed at NeXT Computer. would be improved by “Cocoa were originally developed at NeXT” | 2009-05-27 | ||
24 | TYPO | 3. The name “nib” comes from the acronym for NeXT Interface Builder. Interface Builder and the framework that has become Cocoa was developed at NeXT Computer. “was” should be “were” as you are referring to both Interface Builder and Cocoa’s predecessor . | 2009-05-27 | ||
181 | TYPO | Last sentence of the third paragraph, “A category is like a mixin in other languages?” should probably end in a period, not a question mark - unless this is what the frightened programmer is thinking, in which case there should be quotes around it :) | 2009-05-28 | ||
186 | TYPO | In the first sentence of the first full paragraph on the page, there should be a period after the word “extension”. | 2009-05-28 | ||
39 | SUGGEST | The description of the process of building SimpleBrowser omits changing the Window title to SimpleBrowser and changing NewApplication to SimpleBrowser. This is fairly intuitive but perhaps a note to the effect that it is either covered later or left to the reader’s intuition is called for. | 2009-07-23 | ||
40 | OK | The superscript 1 for note 1 is missing from the text: When the user presses the | 2009-05-27 | It appears in the paragraph above. | |
263 | TYPO | In paragraph 3 after the heading “Number Formatters,” you find the following: Look in your Interface Builder Library for am NSNumberFormatter. ‘am’ should be ‘an’ | 2009-05-28 | ||
211 | TYPO | last paragraph, first sentence should read either: | 2009-05-28 | ||
216 | TYPO | Last sentence, last paragraph is missing the word “should”. | 2009-05-28 | ||
137 | SUGGEST | I couldn’t find the hierarchy in Document window depicted by the image on this page. I did some research and found out that to see this, you have to switch the View Mode of the Document window to Outline mode. Might be worth mentioning? Great book by the way! I just started using Xcode and Obj-C after doing Python on a PC for a while and I love it! Looking forward to the final release (and hardcopy;) ! | 2009-05-28 | ||
170 | SUGGEST | It would be great to be able to download the completed xcode projects. This way one could compare their own project to how it should be. | 2009-05-28 | ||
267 | TYPO | The first sentence of the first paragraph of section 16.7 should contain the word “take” not “takes”. | 2009-05-28 | ||
272 | TYPO | The second bullet point in section 16.11, the word “contains” should be “MyBookshelf”. I think. | 2009-05-28 | ||
274 | SUGGEST | The last paragraph of section 16.11 that deals with conditionally enabling the remove button should be more specific about which Button Binding section the binding should be set under: Availability > Enabled, I assume. Perhaps another screenshot would be nice. I put it under Action Invocation > Argument the first time because I’m a noob. | 2009-05-28 | ||
20 | OK | In section 1.4 you say to hold the option key down — on my computer, it’s the control key. | 2009-05-29 | I've added something here but I think you were confusing two different ideas presented in this paragraph. | |
163 | ERROR | It would be helpful to describe what’s going on when you put in the line of code: borderedIconView = (BorderedIconView *)[self view]; I assume we’re casting the current [self view] as a BorderedIconView before assignment, but for those of us who don’t really know for sure (myself included), some clarification would be helpful to understand and not just take it on faith. | 2009-05-28 | ||
282 | TYPO | In the 5th paragraph, “Command Key arrangedObjects” should be “Controller Key arrangedObjects”. | 2009-07-23 | ||
99 | OK | I have been unable to produce a red triangle. I have set garbage collection to unsupported as shown on the previous page. | 2009-07-24 | ||
295 | TYPO | In the last paragraph, “sortDescriptor property” should be “sortDescriptors property” - plural. | 2009-07-23 | ||
250 | ERROR | Counter5 example works fine if compiled for unsupported GC nevertheless does not work for supported GC. I assume that KVO in general should work well with supported GC but this is not the case with relevant code examples in this book. I believe that this situation asks for clarification, explanation and probably a KVO code that works with garbage collection. | 2009-07-23 | ||
297 | TYPO | The code sample at the bottom of the page should be PragBook.m, not PragBook.h again. | 2009-07-23 | ||
59 | TYPO | Second paragraph under “Joe Asks…”, first sentence. The word “let’s” should not have an apostrophe. Should read: “A warning lets you know…” | 2009-07-23 | ||
296 | SUGGEST | You should probably mention that the Class of the PragBook Model Entity needs to be changed to the new “PragBook” class instead of the default “NSManaged”. | 2009-07-23 | ||
135 | SUGGEST | First: Great Book. Now: Chpt 9 (Custom Views). In this chapter you walk the reader through creating a custom view. I think it might help the book to take a paragraph or so to explain WHY A CUSTOM VIEW IS USED in more detail. In general, it might help readers to better understand the circumstances when a coder might want to consider a custom view approach (Chpt 9) over another approach (i.e., that used in Chpt 8). Pros/Cons of the Chpt 8 approach vs. the Chpt 9 Custom Views approach might help new programers understand which approach to use when planning their own applications. Just a paragraph or two at the very start of the Chpt 9 would be helpful. | 2009-07-23 | Great idea -- I'm going to incorporate this (and expand on this chapter) in the Snow Leopard rewrite. | |
46 | ERROR | The signature of goBack: as described in the docs (XCode 3.1.3) is - (void)goBack:(id)sender | 2009-07-23 | ||
48 | ERROR | The signature of takeStringURLFrom:as described in the docs (XCode 3.1.3) is - (void)takeStringURLFrom:(id)sender | 2009-07-23 | ||
57 | OK | 4.4 Actions and Outlets | 2009-07-24 | ||
111 | SUGGEST | “Of course, now we’re responsible for releasing this memory | 2009-07-23 | ||
159 | SUGGEST | “If you look at MainMenu.xib you’ll see that the “File’s Owner” is also given as NSApplication.". | 2009-07-23 | ||
36 | TYPO | The second sentence in the “Joe asks…” box is a run-on. It starts, “.In the top left corner of your Xcode window and you will see the warning…” | 2009-07-23 | ||
214 | ERROR | Reading a plist - the presented code reads: | 2009-07-23 | ||
34 | SUGGEST | a stop button ? what stop button | 2009-07-23 | ||
222 | ERROR | Code at the bottom mentions: | 2009-07-23 | ||
234 | ERROR | The code will yield an error on the undeclared ivar bookInfo. As shown, it must be declared in the header file. | 2009-07-23 | ||
237 | SUGGEST | Changes in the awakeFromNib are missing. You would have to consult the supplied source code to see the changes. It should be mentioned to remove the convertDictionaryToProperties, convertPropertiesToDictionary and createATempBookFrom methods. | 2009-07-23 | ||
239 | SUGGEST | KVC/Bookshelf7 in the code download: | 2009-07-23 | ||
237 | OK | The code mentions -(IBAction) setChapterName: | 2009-07-24 | I may have to say this again but it is covered earlier in the book. Thanks. | |
256 | SUGGEST | Needed changes in Display.h are missing. Both observerOne and observerTwo need to be added as ivars. And released in dealloc. | 2009-07-23 | ||
78 | TYPO | Duplicate ‘to’ at top of this page. “Once you have this window you ask it to to set its title” should be “Once you have this window you ask it to set its title”. | 2009-07-23 | ||
175 | OK | The code at the end of chapter 10 does not link because it misses files ActivityViewController, which is only described in the following chapter as ‘and now remove ActivityViewController…’. This makes it very difficult to understand the point made in chapter 10. | 2009-07-24 | Please see page 173 of the version you are talking about. | |
175 | OK | Missing source files in chapter 10 | 2009-07-24 | See page 173 and sample code. | |
203 | ERROR | Chapter 12.8: " The only other change that is required is to drop the | 2009-07-23 | Actually the text is correct. The column identifier is not the text that appears in the heading of the column. It is the identifier that we set in Interface Builder a few pages back. | |
259 | TYPO | Second paragraph, missing double quote after “most of it.” The exact line is with KVO and KVC compliant classes, the answer is “most of it. Much of | 2009-07-23 | ||
108 | OK | First: Thanks for a wonderful book ! I select the code in my Main.m file, choose Edit, but the Refactor… menu-item is disabeled (off). Any suggestions ? | 2009-07-24 | Sorry I'm not seeing it -- please email me daniel at prag prog | |
147 | OK | When I run Hello Application, if I launch or terminate one application I get something that looks like the book. If I launch or terminate two applications consecutively then I get a red or green box around the icon. (well three sides of the box, the right side is left blank). | 2009-07-24 | Sorry Joseph, I'm unable to reproduce your issue. | |
60 | OK | This is for p.60 of B1.07, May 29, Section 4.5, dealing with the missing import of <WebKit/WebView.h>. Wow, I say, the error message did not AT ALL indicate that that was the problem, to me at least. I’m used to Java coding in NetBeans and Eclipse where you get editor hints that say something like “add import for x.y.z”. I’m guessing that Xcode has no such feature (would be a lot harder in C than Java), but it would help my understanding a lot if you could explain better how to interpret such error messages. | 2009-07-23 | Thanks -- I'm not really sure what to do about this. I'm showing you how to deal with an obscure, badly worded error message. There's really not much to interpret. | |
19 | OK | No closing quote marks: “that Smalltalk is not only NOT its syntax or the class | 2009-07-24 | The quote continues so the quote is closed in the next paragraph. | |
282 | TYPO | Last paragraph before section 17.4, arrangedObjects is spelled arramgedObjects. | 2009-07-23 | ||
12 | OK | A valuable addition to the book would be a short section covering unit testing under Xcode. It would be the “pragmatic” thing to do. | 2009-10-14 | I've really struggled with this. When I coded in Java I was religious about test first - in Cocoa I'm still not happy with the available tools. I don't like the rhythm of OCUnit. I'm looking at a new framework available on google code but I've also avoided using third party libraries in this book. I'm not happy not including this but am not sure how I would include it. | |
140 | TYPO | First paragraph after first code listing. Second sentence: | 2009-09-23 | ||
283 | OK | The Family Of NSControllers list all the controllers that are available in Interface Builder. I noticed that description of NSObjectController, NSUserDefaultsController and NSDictionaryController are cut off. I presume this is because of screenshot? | 2009-10-14 | ||
283 | TYPO | Last paragraph of chapter 17.6: “Set the value of the Controller key is selection and the Model Key Path | 2009-09-23 | ||
216 | OK | The footnote is staggered across 2 pages making it difficult to follow. | 2009-09-24 | That gets fixed at layout—Dave | |
69 | 69 | ERROR | In the second paragraph of page 69, the book currently says: “… it knows how to respond to the message setShowsToolbarButton:. If our window has a toolbar then passing in YES displays the toolbar and passing in NO hides the toolbar.” …which is not literally correct. What that message actually does is specify whether or not the window shows the toolbar control BUTTON (right side of the title bar), not the visibility of the toolbar itself. Liking the book so far! Ken H | 2009-09-23 | |
86 | TYPO | subview not well written in: | 2009-09-23 | ||
86 | TYPO | “when you want to add a view to a window as its subivew you ask the view” | 2009-09-23 | ||
88 | OK | Perhaps display the desktop version and the iPhone version side by side? | 2009-10-14 | ||
135 | ERROR | Isn’t it NSWorkspace instead of NSWorkSpace? “We go right to the source. NSWorkSpace manages the application environment on our desktop,” | 2009-09-23 | ||
29 | SUGGEST | I am going through the SimpleBrowser example and I am at the end of chapter 2.3. It says:
I’ve selected the Window(where I put the text field and buttons) and I am in the Size Inspector and there’s no “Use Current” button. It took me some time to realise that I have to select the Window (Window) in the MainMenu.xib window and not the window where I put all components. | 2009-09-23 | ||
14 | TYPO | “hook them up to controller’s” (in first paragraph of Beta 1.07 notes) should not have an apostrophe. | 2009-10-17 | ||
15 | TYPO | Missing word “of” between “way” and “user” in the sentence fragment “Although Apple has said that there will be very little in the way user visible changes…” | 2009-10-17 | ||
74 | TYPO | “But sometimes you do want other objects you be able to examine and possibly” should be “other objects TO be able” | 2009-10-17 | ||
36 | TYPO | “you can right-click (or ^-click) on the web view do bring up a heads up display version” | 2009-10-17 | ||
50 | TYPO | First paragraph after heading “3.3 Methods with Arguments”: | 2009-10-17 | ||
59 | TYPO | Footnote at bottom of page 59 - the word “refer’s” should be “refers” | 2009-10-17 | ||
64 | SUGGEST | Page 64 “Greeter:NSObject indicates that the SimpleBrowserController class directly extends the root class NSObject” - this paragraph does not make a lot of sense especially in the context of the HelloWorld app. | 2009-10-19 | ||
74 | TYPO | “Often that state is internal you your object” should be “Often that state is internal to your object”. | 2009-10-17 | ||
74 | TYPO | “In the last chapter we set certain attributes such as a the font size” should not have “a” before “the font size”. | 2009-10-17 | ||
83 | TYPO | 8.6 - “Once set of attributes” should read “One set of attributes” (?). | 2009-10-17 | ||
84 | TYPO | At the bottom of the page, the paragraph talks about the setter of a property named time of type NSDate, however the code segment says setname:newName etc. | 2009-10-19 | ||
23 | TYPO | “The examples in this book assume you are running at least Xcode 3.1.” You need Xcode 3.2 to be able to follow the chapters where AppDelegates are used. | 2009-10-17 | ||
181 | OK | Continuity problem. 182 - The first sentence of the chapter “That was a pretty boring HelloWorld” is a non-sequitur after the previous chapter of complicated SimpleBrowser notifications. Also the following paragraph talking about garbage collections is irrelevant at this point, as it happened so far back in the book. | 2009-10-14 | Thank you Caroline - \n \nThat's why I left the revision marker in to indicate that I had only revised the book up through Chapter 10. I decided this material needed to be presented earlier and will remove it from Chapter 11 which is completely changed for the next beta. \n \nD | |
86 | ERROR | You wrote: “The today is an NSDate. It is a pointer to an object that doesn’t conform to NSCopying and so we use retain as the memory attribute.” Looking at the NSDate Class Reference, it says NSDate DOES conform to NSCopying. | 2009-10-19 | ||
168 | OK | Page 168 - 10.10 Organizing with pragma marks and page 191 - 13.5 Introducing pragmas cover the same information. | 2009-10-14 | Thank you. You are, of course, right. I haven't revised 13.5 yet to remove that material but felt it appropriate to introduce it earlier. | |
64 | TYPO | I believe that “SimpleBrowserController” should be replaced with “HelloWorldAppDelegate” in the sentence "Greeter:NSObject indicates that the SimpleBrowserController class directly extends the root class NSObject. | 2009-10-19 | ||
148 | TYPO | Accidentally submitted this for page 147, but should be 148: “Drag to connect frameLoadDelegate to your SimpleBrowserController.” SimpleBrowserController has been called BrowserController up until now. | 2009-10-19 | ||
Many | ERROR | In the sections that have been updated for Snow Leopard & Xcode 3.2, you are constantly referring to ‘Build and Go’ but it’s called ‘Build and Run’ in this version of Xcode. | 2009-10-14 | ||
162 | ERROR | “As a final tweak, change the Return Key from “Default” to “Go”. Save your work and run the application again. Now the keyboard looks like this." But the image included has the Return Key text set as “Return” instead of “Go”. | 2009-10-19 | ||
168 | SUGGEST | #pragma mark - It might be worth pointing out that if you have an extra trailing space at the end of the line, it doesn’t render as a dividing line in method drop-down list | 2009-10-14 | ||
22 | TYPO | The url for Apple Developer Connection doesn’t work. | 2009-10-17 | ||
78 | TYPO | And in the initWithName: method we call the getter like this. “getter” should be “setter” | 2009-10-19 | ||
68 | TYPO | Is this really how your create the greeter object? I thought you would need an alloc and and init… | 2009-10-19 | Thanks - in an earlier version I did it with alloc, init. I'm still doing it that way but I've moved the alloc init inside of the greeter method. | |
27 | ERROR | The “Build & Go” button is now labelled “Build and Run” in Xcode 3.2 (xCode IDE: 1610.0). | 2009-10-14 | ||
28 | ERROR | “The one you care about is empty except for the word “Window” in the title bar" should read “The one you care about is empty except for the words “Simple-Browser” in the title bar". Seems that Xcode 3.2 gives the window the title of the project. | 2009-10-19 | ||
39 | ERROR | Existing line at bottom of PDF page 39 “Right-click or C-click on the Frameworks folder and choose SimpleBrowser > Add > Existing Frameworks …” should read “Right-click or C-click on the Frameworks folder and choose Add > Existing Frameworks …” | 2009-10-19 | ||
277 | SUGGEST | in the - (void)setSupportFile function you use: [fileManager createDirectoryAtPath: supportFolder attributes: nil] to create the Application Support directory for “Hello Application Table”. In the XCode documentation it says this method is deprecated as of 10.5. When running through this example I used: [fileManager createDirectoryAtPath:supportFolder withIntermediateDirectories:NO attributes:nil error:NULL]; | 2009-10-19 | ||
46 | TYPO | Section 3.2: Help > Documentation is now Help > Developer Documentation | 2009-10-19 | ||
81 | TYPO | Top of page: “That changes the initWithName: method to this” - but the code snippet shown is the sayHello method, not the initWithName: method. | 2009-10-19 | ||
91 | TYPO | in section 6.2 The Clang Static Analyzer: ‘Choose the menu item Project > Edit Project Settings and in the “Build” filter for the garbage collection setting and set it to “Unsupported” ’ Should lose the second “and” | 2009-10-19 | ||
96 | TYPO | top of page: ‘[the leak] is reported to originate in Greeter’s applicationDidFinishLaunching: method’ The applicationDidFinishLaunching: method is in FlashlightAppDelegate, not Greeter | 2009-10-19 | ||
97 | TYPO | oops - #41016 above refers to PDF page 97, not 96 | 2009-10-19 | ||
100 | OK | Section 6.9, second paragraph: ‘Note that in the init method we let the super class do its initialization before we did our custom initialization. Here we clean our custom objects up first and end with a call to [super dealloc].’ Maybe I’m missing something, but in the sample code you provided for the init method (in the Greeter.m download link in the PDF), there is no call to [super init]. All there is is custom initialization. | 2009-10-19 | init turns around and calls initWithName which is an "init" method which behaves exactly as described | |
131 | TYPO | Section 8.7 second sentence: ‘rowserController’ should be ‘BrowserController’ | 2009-10-21 | ||
29 | ERROR | I don’t have a MainMenu.xib at all — only a MainMenu.nib. So I cannot check the XML behind the interface we are building. This is XCode 3.2 on Snow Leopard… | 2009-10-29 | ||
26 | TYPO | “One of the keys to the section section is modularity.” Note “section” is said twice. Should be “third section”, or possibly just “section”? | 2009-10-29 | ||
44 | TYPO | Possible typo. You say: “You will work Xcode to define your classes and you will instantiate classes into objects in either Xcode or Interface Builder.” Do you mean “You will work in Xcode…”? | 2009-10-29 | ||
59 | ERROR | I don’t get this. Now I tried downloading XCode 3.2.1 and also the IPhone development SDK (3.2.1). I’m using SnowLeopard, and the screenshots for creating a new application do not look like those in the book. I also still have no xib-file, only a nib-file. Below classes I do not get the HelloWorldAppDelegate.m file. So I cannot follow the example at all. Perhaps you must be more specific of which version of XCode you are using, or at least specify how we get these extra files somehow… | 2009-10-29 | ||
175 | TYPO | “In ActivityController.m you need to synthesize currentApp and create an instance of the RunningApplications in awakeFromNib. Be sure to import RunningApplications.h.” References to RunningApplications and RunningApplications.h are left over from previous beta? This is the first time it’s been mentioned in the current PDF, and doesn’t seem to be related to what’s being discussed. | 2009-10-29 | ||
111 | TYPO | First paragraph, last sentence, has an extraneous “that”: You’ve already seen that how to create the view using Interface Builder. | 2009-10-29 | ||
59 | SUGGEST | Finally got it. A suggestion to help people in the same situation as I was: First hint something is very wrong is that the icons for the templates are all shaped like little blue prints. You will not get xib-files, and there are no AppDelegates generated. Seems to be a problem since I installed XCode from Leopard, upgraded to Snow Leopard and installed the new tools. Even downloaded the latest tools and nothing helped. Solution: Uninstall the tools using the commandline and delete the Developer-folder entirely. Restart machine. Install the latest tools. Restart again (perhaps not needed). After this everything works as described in the book. | 2009-10-29 | ||
98 | SUGGEST | Just a note that if you are running this on a real device Build and Analyze doesn’t yield the same results as the Mac. In fact it doesn’t complain at all about host. The Leak analyzer also doesn’t work with a real iPhone either. | 2009-10-29 | ||
206 | TYPO | CustomApp should be CurrentApp (two places). | 2009-10-29 | ||
89 | TYPO | At the first paragraph(“You can also use separate | 2009-10-29 | ||
97 | TYPO | This one is related to #41102: | 2009-10-29 | Actually it's fine here -- I'm now using copy as the memory attribute. I also call it out because I use it to generate a time stamp. | |
110 | SUGGEST | The second last paragraph(“If you look at the final version in the code …”) on this page can be removed because XCode 3.2.1 adds the dealloc method automatically to FlashlightAppDelegate. | 2009-10-29 | ||
112 | TYPO | “Just like a wall socket, the outlet is a place in the controller where the visual element plugs in to.” | 2009-10-29 | ||
187 | TYPO | the method call is listed as [self.apps.delegate sayHi]; but it should be [self.currentApp.delegate sayHi] so the whole awakeFromNib method should be: - (void)awakeFromNib { | 2009-10-29 | ||
156 | OK | In final listing 9.13 the following lines are not needed due to the default behavior of NSProgressIndicator *progress: | 2009-11-11 | Actually you can check by commenting them out that they are needed. | |
168 | SUGGEST | To be consistent shouldn’t: | 2009-11-11 | You don't lose anything by doing it your way -- you don't have to declare informal protocols and so I'm not. | |
37 | TYPO | First sentence of the last paragraph has an extraneous “the” in front of “either” at the end of the first line. | 2009-11-11 | ||
38 | TYPO | At the beginning of the first new sentence on line one, shouldn’t “This” be “The” instead? | 2009-11-11 | ||
227 | TYPO | “ImageView” should be changed to “IconView” within the first sentence on the last paragraph on the page: Add a property named alertColor of type NSColor to your ImageView. should be Add a property named alertColor of type NSColor to your IconView. | 2009-11-11 | ||
244 | TYPO | Need to replace “if” with “it” in the following sentence: We don’t want to have to use if every time we fill a table cell. | 2009-11-11 | It should be "if" as in an "if" statement I've clarified | |
345 | TYPO | “Connect the and bind the visual elements to the Author Controller” Should be “Connect and bind the visual…”? | 2009-11-24 | ||
346 | TYPO | “Ender the chapter numbers and titles for a book.” Should be “Enter the…” | 2009-11-24 | ||
74 | OK | The More detail is below: Within the Greeter interface the following method is defined: The method variable “name” conflicts with the Greeter’s member variable “name”. On the next page, the initWithName: implementation corrects the typo: | 2009-11-24 | I can see why this might be confusing, but this is not a typo. There would be no harm in making the change you ask for, but it is correct as it stands. | |
82 | TYPO | “There wasn’t anything special about they way in which we implemen- tated the getter and setter methods.” Should be: | 2009-11-24 | ||
187 | TYPO | [self.apps.delegate sayHi]; apps hasn’t been declared, i think it’s currentApp | 2009-11-24 | ||
26 | TYPO | One of the keys to the section section is modularity. We break methods, i guess the section section part is a typo | 2009-11-19 | ||
63 | SUGGEST | Hint: When selecting the text to Refactor make sure you don’t include either of the curly braces. If you do, you won’t have the ‘Extract’ option available in the drop-down menu. | 2009-11-24 | ||
63 | ERROR | Reference is made to labelFrame, but the code says labelLocation. | 2009-12-18 | ||
314 | ERROR | The code examples seem to be missing new code, i.e., there’s no mention of ‘totalCount,’ neither any new methods (though it is possible to guess all that’s missing, for example: “NSNumber *countOne, *countTwo”; should be“NSNumber *countOne, *countTwo, totalCount”). | 2009-12-18 | ||
84 | ERROR | Top of page - “That changes the sayHello method to this.” - should be - “That changes the initWithName method to this.” (followed by the updated initWithName implementation) since we are now talking about the setter. | 2009-12-18 | ||
80 | OK | Under the Greeter.h code, the declaration of the setName: method takes a parameter called ‘name’, but in the implementation of setName on the next page, you called the parameter ‘newName’ instead of ‘name’. I didn’t test it your way, but I assume they need to match. | 2009-12-18 | They don't -- but thank you. | |
63 | SUGGEST | Even though you called section 4.3 ‘Refactoring Code’, it is a departure into a discussion about xCode that is somehow not immediately obvious. Perhaps you could shorten the section, and make it a ‘Joe Asks…’ section on how to quickly rename variables. Personally, as soon as you wrote “Let’s change the variable name from labelLocation to labelFrame”, I went ahead and did it, so it took me a second to figure out why you were still talking about labelLocation after that. | 2009-12-18 | ||
87 | OK | Third paragraph reads “You want to use assign for all non- object types”. Perhaps you could explain why ‘assign’ appears to be used for an object pointer in ‘HelloWorldAppDelegate.h’. @property (assign) IBOutlet NSWindow *window; | 2009-12-18 | I don't know where to do that. Your question is a good one but it doesn't fit here. They're really avoiding a corner case of circular dependencies. Your example doesn't counter what I'm saying here so the explanation needs to go elsewhere - not sure where. | |
89 | ERROR | Last sentence of last paragraph reads “Note that we’ve also initialized the name and upperCase variables in initWithName:.” If by that you are referring to the change to dot syntax, then the ‘name’ variable was already changed in code at the top of pdf page 84 (except that the code example on the top of page 84 is the wrong one as noted in my erratum for page 84). | 2009-12-18 | ||
102 | ERROR | Top of page reads “Choose the menu item Build > Build & Debug. You should see a boilerplate message in your Console window followed by something like this.” Strangely, I only get the error message once in a while. It is inconsistent as to when it appears. If I switch from ‘Build & Debug’ to ‘Run’ or ‘Build & Run’, I might get the error. The only time it is consistent is when I build after cleaning the project. This is what I get when the error doesn’t appear… 2009-11-30 08:04:03.984 Flashlight[2695:207] Greeter, name: Maggie | 2009-12-18 | ||
105 | ERROR | Last paragraph says “On the other hand you don’t need the object that myGreeter points to any more so you release it.” The ‘myGreeter’ variable is shown as simply ‘greeter’ in the code example above. | 2009-12-18 | ||
105 | OK | In the ‘setGreeter’ code example, the question that comes to my mind is, why isn’t ‘newGreeter’ released after the object it points to is retained by ‘greeter’? This would seem like a memory leak… or is there a special case where method arguments don’t need to be released manually? Perhaps this could be explained. | 2009-12-18 | I don't know if you'll see this but ... \n \nnewGreeter points to some memory \n \ngreeter points to some memory \n \nyou hold onto the location that newGreeter points to \n \nyou let go of the location that greeter points to \n \nyou then redirect greeter to point to the location that newGreeter points to. At the end of this method newGreeter is gone but what it pointed to is now held by greeter. | |
112 | OK | Code example at top of page - Greeter *host = [Greeter greeterWithName:@“Maggie”]; This line had earlier in the chapter been converted to - Greeter *host = [self greeterFor:@“Maggie”]; So the proper place for - [Greeter greeterWithName:@“Maggie”] would be in the greeterFor: method. | 2009-12-18 | Your way is a valid alternative. I'll stick with this way. | |
128 | TYPO | Last paragraph, first sentence, change ‘out’ to ‘how’. Currently reads: “…on page 113 you learned out to…” Should read: “…on page 113 you learned how to…” | 2009-12-18 | ||
130 | TYPO | Fourth (last) paragraph starts with an nonsensical sentence: “Interface Builder provides us with a representation our BrowserController object in.” | 2009-12-18 | ||
168 | OK | Perhaps a note (or a reminder if that be the case) on why we don’t need to declare (Very good book so far.) | 2009-12-18 | ||
167 | SUGGEST | This may be more than you intend for this section, but perhaps a note on why NSTextField knows how to trigger an action, while UITextField needs a delegate. Is there some sort of ‘hidden’ delegate that is being utilized when configuring an NSTextField in IB? | 2009-12-18 | ||
74 | TYPO | Now lets look at line 13 in the sayello method. | 2009-12-18 | ||
179 | TYPO | Second paragraph, first sentence: “The name method returns the name of the notification. and the object…” Remove the period after the word ‘notification’. | 2009-12-18 | ||
185 | TYPO | Section 11.10, first paragraph, first sentence reads: “You know how to every step…” Should be: “You know how to do every step…” (or something similar) | 2009-12-18 | ||
191 | TYPO | First paragraph, first sentence, third word: applicationdidLaunch: The first d in ‘did’ isn’t capitalized. applicationDidLaunch: | 2009-12-18 | ||
196 | TYPO | First paragraph, first sentence, missing close quote after the word “Terminated”. | 2009-12-18 | ||
199 | SUGGEST | Perhaps I’m getting ahead of things, but since the section at the bottom half of page 199 is about Reducing Redundancy, then why did we route the ‘respondToChange’ method through the ‘applicationDidLaunch’ and ‘applicationDidTerminate’ methods instead of calling ‘respondToChange’ directly from ‘registerNotifications’? Again maybe there’s a reason that is forthcoming. In the meantime, it would seem like a logical change. | 2009-12-18 | ||
203 | ERROR | First code line at top of page: [activeApps removeObjectForKey: appName]; Should be: [runningApps removeObject…] | 2009-12-18 | ||
205 | TYPO | Second to last paragraph: NSAPplication should be: NSApplication | 2009-12-18 | ||
217 | ERROR | Last Paragraph, you refer to an outlet called ‘iconView’. Up until now, it has been called ‘imageView’. | 2009-12-18 | ||
224 | OK | Perhaps you could clarify one thing. Earlier in the book, a statement was made that if it can be done in IB, then it should be (or something like that). Is working with multiple NIBs an exception to that rule? Or did we work directly in code in the latter part of this chapter merely to demonstrate how it could be accomplished without IB? In other words, which is the recommended way to set up our multiple views. In code, or in IB? | 2009-12-18 | ||
212 | TYPO | Missing a space after the sentence: “We’ll put these components into one nib.” | 2009-12-18 | ||
228 | ERROR | Last paragraph contains the sentence: “The x-axis increases to the right and the y-axis increases to the left.” If the coordinates are anchored from the bottom left corner, then wouldn’t the y-axis increase toward the top? | 2009-12-18 | ||
228 | ERROR | Last sentence (which continues onto the next page): “The frame, unless we specify otherwise, will straddle the line so really the bottom left corner of the black frame is at the point (12, 30).” I’m trying to figure out precisely what you mean when you write that the frame straddles the line. In any case, since the width of the stroke is 12 on all sides of the rectangle, it would seem that the x and y coordinates of the bottom left corner of the stroke would be affected equally. The way you have it written, the x coordinate is reduced by 6 (from 18 to 12) and the y coordinate is reduced by 12 (from 42 to 30). I assume this is an error. If not, please explain more clearly how the coordinate system works. My guess is that the frame of the ‘stroke’ straddles the line, so that a stroke that has a width of 12 will be drawn in such a manner that half of its width is drawn toward the inside of the 180 x 180 rectangle, and the other half of its width is drawn toward the outside. If this is correct, then the resulting coordinate of the lower left corner of the black frame would seem to be (12, 36) instead of (12, 30). | 2009-12-18 | ||
227 | SUGGEST | Bottom of page - perhaps just a quick comment on how NSView’s drawRect: method is getting called. Is it part of the initialization of any NSView object? Does it have something to do with the nib? The documentation doesn’t explicitly state if it is part of the NSView initialization either. Perhaps a comment could go on page 229 before the Exercise. Or maybe it’s just beyond the scope of your intention. | 2009-12-18 | ||
233 | OK | In section “15.6 Drawing Text”, which spans the next few pages, the code is out of sync with the explanation. It all works out if you skip ahead and go back, but the flow of the section is completely lost. | 2009-12-18 | I'm not understanding your comment. I checked the flow and believe it is correct. | |
244 | OK | In the code at the very bottom of the page, your signature for the ‘initWithNibName:Bundle:’ method is: - (id)initWithNibName:(NSString )nibName bundle:(NSBundle)nibBundle In documentation, it is slightly different: - (id)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle)nibBundleOrNil It seems to work either way as long as the call to ‘super’ matches. In my case, I got the method name from documentation, but my call to ‘super’ came from your solution, so the code was broken at first. I thought I’d point it out since you’ve stressed the importance of copying method signatures from documentation. | 2009-12-18 | Thanks -- the name of the variables in the declaration of a signature doesn't matter as long as (as you observed) match how they are used in the method. I shortened the variable names so that they fit on one line in the book | |
249 | SUGGEST | Top of page, code examples for ‘applicationDidLaunch:’ and ‘applicationDidTerminate:’ - This is minor, but the: [table reload] statement seems to be a departure from the now familiar use of ‘self’, as in: [self.table reload] | 2009-12-18 | ||
258 | TYPO | Section 17.5, middle of first paragraph, you wrote: “For the most part you’ll want to the techniques…” It should be something like: “For the most part you’ll want to use the techniques…” | 2009-12-18 | ||
265 | ERROR | The first two sentences on this page appear to be telling me to do the same thing from opposite perspectives and are therefore redundant. Or else I’m just missing the point. “Use the Connections Inspector to connect its selector to the app delegate’s openPreferences: action.” “Use the Connections inspector to connect the HelloApplicationDelegate’s openPreference: action to the Preferences… menu item.” | 2009-12-18 | ||
268 | ERROR | Third to last paragraph, last sentence reads: “In IB use the Connections Inspector to wire this outlet and action to the File’s Owner.” The outlet and action are in PrefController, which is also the File’s owner, so they would be wired to themselves. You must mean to wire them to Matrix instance in the preferences window. | 2009-12-18 | ||
268 | TYPO | Second to last paragraph, first sentence: “…so that we can figure out which one is selected and so can change the settings.” The part after the word ‘and’ should probably read: “…and can change…” or: “…and so we can change…” or something like that. | 2009-12-18 | ||
269 | SUGGEST | In the code example toward the end of the page, you should probably highlight (with an arrow) all four lines after the “NSDictionary *defaults =” line. The reason is that the last time we worked with this “initialize” method, we used the “dictionaryWithObject: forKey:” method. This new version uses “dictionaryWithObjectsAndKeys:”, so more than just the two currently highlighted lines need to change. | 2009-12-18 | ||
273 | ERROR | I’m not actually implementing this section, merely reading it, but in the code example toward the bottom of the page, you create a “NSDictionary *” called “view”, but in the next line of code that starts with “self.ac =”, you seem to have changed the name of the NSDictionary to “viewDictionary”. Again, I’m not implementing this, so I can’t test it, but it looks like “view” stores the NSDictionary, and the next line should pull values from that same NSDictionary named “view”, not “viewDictionary”. | 2009-12-18 | ||
275 | ERROR | Hey, I haven’t been putting my name in these errata! What was I thinking??? Last paragraph, last two sentences: “It has the method initWithNibName: but there’s nothing left to tell it what its nib name is. Add this implementation of init just below the initWithNibName: method.” The two references to “initWithNibName:” should (I think) actually read “initWithWindowNibName:” since that is the method used in code up until now, and that is the method we now call from “init”. | 2009-12-18 | ||
278 | OK | Last code example toward bottom of page is missing the opening curly bracket after the ‘else’ statement. | 2009-12-18 | ||
125 | OK | Creating the generalize and personalize methods here without signatures in the .h file throws a warning | 2009-12-18 | Not if you do it how I've shown. I'll bet you've introduced them below where they are called and so you're getting warnings. | |
278 | OK | For the longest time I couldn’t figure out why the code in this section didn’t work for me. All the previous code worked to this point. Finally I realized that if I add (retain) to ‘app’ in the CurrentApp header file, it fixed the problem. Looking at your downloadable code example for ‘HelloApplication45/CurrentApp.h’, you don’t have (retain) set for your ‘app’ variable. So now I’m confused. Does your code work, and I’m missing something else? Or is your code broken without (retain) like mine was? My GarbageCollection is set to ‘unsupported’, if that makes a difference. | 2009-12-18 | That is exactly the issue. I am requiring in this book that your Garbage Collection is set to required | |
128 | TYPO | In Chapter 7, Outlets and Actions, on page 113 you learned out (should be how) to con- nect code that you created with objects that were created in Interface | 2009-12-18 | ||
282 | SUGGEST | Second paragraph, last part of last sentence: “—we’ll skip that step for now since author is not a collection.” For consistency, change ‘author’ to ‘title’ since that is the variable you used throughout the rest of the paragraph and in the short code example above. | 2009-12-18 | ||
284 | ERROR | Third paragraph, second sentence: “Next use the Connections Inspector to connect the infoField outlet…” The ‘infoField’ outlet is actually called ‘valueField’ in the previous code and text. | 2009-12-18 | ||
284 | TYPO | Second to last paragraph, second sentence: ‘type “author” instead and…’ First word of sentence (type) is not capitalized. | 2009-12-18 | ||
286 | TYPO | Second paragraph, last word: “displa” should be “display” | 2009-12-18 | ||
286 | TYPO | Second paragraph under section 19.4: “In this method you set which ever property’s name…” It would be better form if “which ever” was the one word “whichever”. | 2009-12-18 | ||
286 | SUGGEST | Section 19.4 Exercise, second paragraph: “In this method you set which ever property’s name appears in the top text field to be the value that is entered in the bottom text field.” This description of the exercise completely confused me for some reason. Perhaps partly because I was tired. Anyway, when I went ahead and did the exercise (the next morning) it made perfect sense. We are updating the value that corresponds to the key shown in the first field by modifying the value currently shown in the second field and hitting enter. So if the first field shows ‘author’, I then can update the value of the ‘author’ key by typing a new author’s name and hitting enter. It all makes sense now, but when I go back and read that sentence, it still sort of confuses me. I think it sounded a little like you were saying that whichever property’s name appeared in the first field would literally become the value of the second field. So if I typed ‘author’ in the first field, then ‘author’ would appear in the second field. Perhaps the description could say something like: “In this method, you update the value of the key that is shown in the first field by typing a new value in the second field and hitting Enter.” Just a thought. | 2009-12-18 | ||
287 | TYPO | Code example toward bottom of page, when creating the NSDictionary, the book title you gave is “Manate Your Project Portfolio”. “Manate” should be spelled “Manage”. | 2009-12-18 | ||
299 | OK | Top of page, first code example: The signature for the ‘updateDisplay:’ method in the header file doesn’t exactly match that in the implementation. The name of the received parameter is ‘newValue’ in the header, and simply ‘value’ in the implementation. Code still works apparently. | 2009-12-18 | There is no requirement that they match. | |
298 | SUGGEST | Bottom of page, last line of code: “IBOutlet NSTextField *displayField;” This seems to be the first time that we’ve used IBOutlet somewhere other than in a ‘@property’ declaration. Makes sense since the variable needs to be declared somewhere as an IBOutlet. Caught me off guard at first, though. Perhaps a small note on this fact. Also, for clarity, I would personally tend to want to always use IBOutlet in my variable declarations even if it is redundantly asserted in the ‘@property’ line. Maybe a note on the ups and/or downs of this as well. | 2009-12-18 | ||
301 | SUGGEST | Middle of page: Paragraph start with: “Next connect the Display object…” Sounds like you’re telling us to perform a step, rather than giving us an overview of what you’re about to show us. Maybe say: “Next, we’re going to connect the Display object…” | 2009-12-18 | ||
308 | ERROR | Code example for UpOrDown implementation, you seem to have unnecessarily imported “Display.h”. (Probably left over from when we were sending messages instead of observing.) | 2009-12-18 | ||
308 | TYPO | The following sentence, toward bottom of page: “Add a second outlet for the additional text field inDisplay.h.” Missing a space between ‘in’ and ‘Display.h’ | 2009-12-18 | ||
311 | SUGGEST | My apologies if this is too nit-picky, but second paragraph, first sentence: “Create an Observer class and add properties to hold the name of the target object and action.” Is the Observer class technically holding the ‘name’ of the target object? When you have an variable of type ‘id’, what exactly is it holding? I assumed it was a pointer to an object (in this case, a reference back to the Display object). | 2009-12-18 | ||
313 | SUGGEST | First paragraph, second sentence: “Each instance of the Observer knows what its listening for and knows what needs to get done when it gets called.” Sorry to be picky again, but this sentence has got me thinking. Do the observers really know what they are listening for? They seem to know what needs to get done when they’re called, but they seem oblivious as to what they are listening for or what even will cause them to be called. The ‘Display’ class seems to know because it registered the observers, and the ‘UpOrDown’ instance would seem to know because it received the observer and makes a call to the observer at the appropriate time, but the Observer instance themselves seem to be out of the loop until they’re called, at which point they perform their task. | 2009-12-18 | ||
314 | TYPO | First paragraph under code examples: There’s a sentence fragment at the end of the paragraph. “and we just log the total to the console in” | 2009-12-18 | ||
317 | TYPO | Sentence toward bottom of page: ‘As before, use the Attribute inspector so that the stepper’s behavior is set to “Value Wrap”.’ “Value Wrap” should be “Value Wraps”. | 2009-12-18 | ||
321 | ERROR | Fourth paragraph, last sentence: “So I restrict my values to integers but I can’t select any integer between zero and one hundred.” I think you mean you can’t select any integer between zero and five. If not, then I’m just not sure what you’re getting at. Also, in order to get multiples of five, I think you actually need to have 21 tick marks instead of 20. One to indicate zero, then 20 more for the twenty multiples of 5 from 5 to 100. | 2009-12-18 | ||
328 | TYPO | Second to last paragraph, second sentence: “This time you’ll bind the array controller we will bind the controller to the array using the content array.” Sentence seems to start over mid-sentence. | 2009-12-18 | ||
54 | ERROR | The “Java translation” of “[myWebView goBack:self]” should use “this” instead of “self” as parameter. | 2009-12-18 | ||
347 | TYPO | First paragraph, third sentence: “In our case, you are searching for book’s whose…” The word ‘books’ should not have an apostrophe. | 2009-12-18 | ||
351 | TYPO | First paragraph after last code example, first sentence: “…may not respond to the methods writeToFile:automically:” should end with “…writeToFile:atomically:”, not “automically”. | 2009-12-18 | ||
352 | TYPO | First paragraph after “NSSet+Persistence.h” code example, last sentence: “writeToFile:automically:” should be “writeToFile:atomically:” | 2009-12-18 | ||
1 | SUGGEST | Great book! Only general comment I’d make would be that there’s a consistent lack of commas in sentences. I’m hoping you’ll also include advice on where to go from here. Again, great book! | 2009-12-18 | Thank you Patrick. In this next pass I hope to also add more references. Thanks for all of your helpful errata. | |
55 | SUGGEST | The footnote 5. about ‘YES’ and ‘NO’ more or less duplicates your comment at the end of section 3.2, which was well-stated. | 2009-12-18 | ||
56 | SUGGEST | Your footnote 6. calling out the “Objective-C 2.0 Programming Language” document duplicates the information at the end of section 3.4, currently on the | 2009-12-18 | ||
64 | TYPO | In paragraph: “We could easily…”, command-click should/be ctrl-click. | 2009-12-18 | ||
65 | TYPO | “Two quick notes” s/b “Three quick notes”. | 2009-12-18 | ||
65 | SUGGEST | Combine bullet points 1 and 3; then there will be 2 quick notes. | 2009-12-18 | ||
76 | OK | The method declaration styles are inconsistent in the book; this page is | 2009-12-18 | I honestly don't care as they make no difference but I will settle on one and fix it in our next beta. | |
78 | TYPO | In the NSString* name vs. NSString *name lines, ‘prefered" s/b ’preferred’. | 2009-12-18 | ||
79 | OK | At the end of 5.1 you mention that ‘id’ is a pointer, and then mention the Apple ObjC doc for another reason. Is there a sneaky writery way to point off to p. 14 of that doc where the ‘id’ typedef is shown/described AND make your other point as well? | 2009-12-18 | NOthing sneaky writery intended. I'm not sure what you're saying though. | |
371 | TYPO | In the first sentence, “We put the type for x in parenthesis.” the last word should read “parentheses”. | 2010-02-06 | ||
374 | TYPO | In the code listing near the top of the page, in the line which reads [temp addObject:[NSNumber numberWithInt:result]]; the variable ‘temp’ should read ‘tempArray’. | 2010-02-10 | ||
232 | ERROR | Top of page: “The stroke, unless we specify otherwise, will straddle the line so really the bottom left corner of the black frame is at the point (12, 30).” Sorry to comment on this again, but still seems like the resulting coordinate should be (12, 36) instead of (12, 30). My previous comment got a little long, so you may have just missed the last part of it… or I’m mistaken. | 2010-02-05 | I suppose I should be particularly embarrassed because of what I have an advanced degree in ... math. Sigh - thank you. | |
237 | SUGGEST | My comment on the previous version of the book (page 233 of that version) suggested that the flow of section 15.6 ‘Drawing Text’ was lost. I think where I was momentarily confused was at the last sentence of the page where it reads: “The result should look like this.” followed by a screenshot on the next page. At first I didn’t realize you meant that the result will look like that after another page or so. After continuing on, it did indeed look like the screenshot. | 2010-02-05 | ||
15 | OK | Beta 1.11, 3rd paragraph: “I this section with the second half …” | 2010-01-25 | ||
101 | OK | 2nd paragraph: “Change your FlashlightAppDelegate.m file to look…” | 2010-02-02 | I can't find the issue | |
103 | SUGGEST | I had to select the Leaks display in order to see the list of leaks in the lower | 2010-02-02 | ||
107 | ERROR | Nit: “Greeter greetee” s/b “Greeter name”. I couldn’t manage to get the “Program received signal” message even after cleaning all the targets. Twice. 10.6.2 with XCode 3.2.1 and Simulator 3.1 on a Mac Pro. However, enabling the zombie worked as described and is very helpful. | 2010-02-02 | ||
371 | TYPO | In the line You notice there is an extra , after parameterType2 | 2010-02-06 | ||
135 | TYPO | You can click on “Failed”, the yellow triangle with the exclamation point that indicates warnings, or the red circle with the “X” that indicates errors… In Xcode 3.2.1 the red circle doesn’t have an “X” - its an exclamation point. | 2010-02-03 | ||
127 | OK | At the bottom: if you blank the button title, the selector will be invalid for the | 2010-02-03 | I just rechecked it - it seems to run fine as described. | |
63 | TYPO | This problem may stem from upgrading from older versions of xcode, but when I create the HelloWorld project it does not contain the HelloWorldAppDelegate class. I hand created one and figured out the linkings (adding an NSObject to the NIB, setting it to be the File Owner’s delegate and setting the outlet to the Window object in the NIB). Some discussion on how to correct for not having the delegate class automatically generated might be in order. | 2010-02-01 | ||
161 | SUGGEST | I found out that it’s possible to eliminate the toggling of the hidden attribute by | 2010-02-04 | Nice point. I've made the change. | |
161 | TYPO | Nit: In didFinishLoadForFrame, outdent “[self resetButtons];” to match. | 2010-02-04 | ||
131 | SUGGEST | You mention “widget” several times on this page, which reminded me to ask | 2010-02-03 | ||
164 | ERROR | The 3.2.1 version of IB has a button pre-placed on the toolbar, which you kind of have to dodge as you place the text field. You can use the width control on the text field to force the button to slide right. I followed your instructions to | 2010-02-04 | ||
170 | TYPO | Top of page: “set it’s look” s/b “set its look” | 2010-02-04 | ||
172 | SUGGEST | After the bullet list at the top of the page… “Don’t forget to synthesize the backButton and forwardButton properties.” I did until I saw the build warnings. | 2010-02-04 | ||
183 | OK | I’m not able to reproduce the error you describe in the paragraphs just before “Grrrrrr.” The console log shows 8 entries after I Cmd-Q out of iCal, and 2 more | 2010-02-04 | My guess is that under project settings your Garbage Collection is not set to required. If that is not the case please follow up. | |
191 | TYPO | In 12.2, paragraph starting with “We’ve” has an extra apostrophe after “CurrentApp”. Font change issue? | 2010-02-05 | ||
193 | OK | First paragraph: “There are no imports, no classes,….” | 2010-02-05 | The text doesn't refer to the template | |
194 | SUGGEST | Commenting out the required method “applicationDidLaunch” also gives you | 2010-02-05 | ||
408 | TYPO | In 27.1, graf 2, line 3: “way to” s/b “way too”. Since I’m currently working in | 2010-02-06 | ||
179 | TYPO | The third sentence in the 11.2 Solution: Creating a Model section is incomplete or contains an extra “and” | 2010-02-04 | ||
205 | ERROR | Footnote 3: Apple renamed Research Assistant to “Quick Help” as of XCode 3.2, | 2010-02-05 | ||
211 | ERROR | I believe that using “for” in displayAction:for: might cause a problem under some circumstance, because “for” is a C reserved word. Notice that code | 2010-02-05 | ||
78 | TYPO | At the end of section 4.9 you say “In HelloWorldAppDelegate.m rename the greeter method named greetFor that takes…”. It needs re-wording, and the method should be renamed to `greeterFor` not `greetFor` (the name `greeterFor` is better, and is used on the next page). | 2010-02-01 | ||
193 | SUGGEST | Again on the #import and @class in the ActivityMonitorDelegate.h file: I commented those lines out, cleaned all targets, built and ran successfully. So, your text is good, code example can delete those lines. | 2010-02-05 | I've verified - and that's not the case. You need the @class because you have variables of that type | |
215 | SUGGEST | “The newly created ActivityView.xib is a cohesive collection of objects.” | 2010-02-05 | ||
125 | TYPO | From the user’s point of view there is no difference between these two approaches; however, there is an important difference between these two from a memory standpoint. | 2010-02-03 | ||
137 | TYPO | “In BrowserController.h file the compiler” is missing a the between In and BrowserController.h | 2010-02-03 | ||
156 | TYPO | The last paragraph in chapter 9.8 references to SimpleBrowserController - three times. But former project was called SimpleBrowser and controller only BrowserController. | 2010-02-04 | ||
157 | TYPO | Hint 2: Last sentence of chapter 9.9 - the heading “Getting and Setting Frame Contents” is referenced in the “Task” section of the WebView doc. | 2010-02-04 | ||
160 | TYPO | The last paragraph says “the SimpleBrowser header file”. SimpleBrowser is the name of the project, but I think the header file should be BrowserController. | 2010-02-04 | ||
163 | TYPO | First sentence below the picture. “The nib contains …. MobileBrowswerAppDelegate.” There is one “w” too much. | 2010-02-04 | ||
171 | TYPO | First sentence in chapter 10.7 references “SimpleBrowserController”. But the project name to reference is SimpleBrowser and the controller is BrowserController. | 2010-02-04 | ||
207 | TYPO | Last complete sentence of the page in chapter 13.8. A space character is required between the words “ActivityController” and “header”. | 2010-02-05 | ||
208 | TYPO | In the second paragraph: “…outlet named imageView…”. The fifth paragraph: “..connect the iconView”. But this is the imageView. | 2010-02-05 | ||
237 | SUGGEST | Up to this point, all samples could be typed in Xcode and are ready to build. There is no need to have the code samples. But in chapter 15.6 there is no advise to define a property appName in IconView.h. In the code sample for IconView.h is a markup for that definition of appName. I suggest to have this definition also inside the book text. | 2010-02-05 | ||
237 | TYPO | The second footnote looks a bit strange, because it is too wide for the page width. | 2010-02-05 | Thanks -this will get fixed in final typesetting. It's not really a typo so much as a "needs to be typeset" issue. | |
252 | SUGGEST | In chapter 16.11 the code sample for ActivityController.h defines an action removeRow. This action is of type void. In the previous chapters actions are marked as IBAction, so I suggest to do this for removeRow too. | 2010-02-05 | ||
253 | SUGGEST | In the code sample for ActivityController.m for the method removeRow:, I suggest to switch the type from (void) to (IBAction), as in the previous code samples. | 2010-02-05 | ||
290 | SUGGEST | The last sentence in chapter 19.5 is a little bit ambiguous. With setValue:forKey: you can set only known properties of the object. I would limit the statement to “defined properties”. | 2010-02-06 | ||
317 | TYPO | In chapter 20.12 should introduced a new variable with name “totalCount”. But the code samples for Counter10/UpOrDown.h doe not define the property “totalCount” nor is the getter method in Counter10/UpOrDown.m called “totalCount”. There is only a method “myTotal”. So the code samples should be updated to match the text. | 2010-02-06 | ||
338 | TYPO | In chapter 22.3, near bottom of the page, you find “…String attributes named bookTitle”. But the property is named “title”. | 2010-02-07 | ||
366 | SUGGEST | In the code sample for CDBookshelf11/CDBookshelf_AppDelegate.m the import statement “NSManagedObject+Report.h” is replaced with “PragBook+Report.h”. But there is already a compiler warning, that “‘NSManagedObject’ may not respond to ‘-PP_report’”. Is there any hint you can give, how to solve this warning? | 2010-02-10 | ||
195 | ERROR | The book example for CurrentApp.h on page 191 leaves out the #import “ActivityMonitorDelegate.h” statement. This does not cause any difficulty until page 195 when calls the delegate methods are introduced. Then the complier generates struct warning on the [self.delegate applicationDidLaunch:self] and [self.delegate applicationDidTerminate:self] statements and the code fails to execute these statements. | 2010-02-05 | ||
63 | OK | HelloWorldAppDelegate class: i am having the same error as the person that reported this before me; although i found out how to work around this problem: stackoverflow.com/questions/2076810/appdelegate-file-missing-in-xcode-3-1 please, add the information on how to create delegate classes and link them from interface builder, so people can use your examples and your book. thanks! | 2010-02-01 | I understand your issue, however this book was ported to Xcode 3.2 and assumes you are using those tools. \n \nD | |
227 | TYPO | “Keep you eye on your nib files” (last paragraph) should be “Keep your eye on your nib files” | 2010-02-05 | ||
237 | SUGGEST | I have found the flow of this book to be really good up to this point, but the order of presentation of sample code here is really strange. You quickly fall out of the pattern of read-code-build-test that has been consistent prior to this point because your builds suddenly fail because of the setup required to make the application name text draw to work properly isn’t explained until later on. Might make sense to present the preparation and dictionary assignment first, and then the view presentation components second. Otherwise, you can’t follow along with comparing your results with the textbook unless you skip ahead, and then jump back. | 2010-02-05 | ||
284 | SUGGEST | It might make more sense to instruct to open the project first, build the classes, and then proceed with the sample code so that you don’t end up going backwards to pick up the sample code for PragBook.h etc. | 2010-02-06 | ||
294 | TYPO | The following sentence (beginning of 19.8) should be adjusted for grammar/misplaced apostrophe: Cheers, | 2010-02-06 | ||
237 | ERROR | I ran into a bit of trouble trying follow the process for displaying text as it appears in the default" look as described in section 15.6 Drawing Text. I found that I needed to make the following changes to get text to appear in the “default” look: 1. ((IconView *)self.view).appName = app.localizedName was never implemented in displayColor method. 2. [self.appName drawInRect:textRect withAttributes:nil] needs to be implemented in drawRect method not awakeFromNib. | 2010-02-05 | ||
258 | ERROR | I had to declare the property dataFile with copy, and not assign, otherwise I would receive a exec bad access error. In the book it’s not specified the type of the property, so I assumed it was assign. | 2010-02-06 | I've added a note about this, but you should have seen a compiler warning that advised you to do this. | |
29 | TYPO | “This section let’s you remove much of your controller code and even some of the model code.” - should be “lets”. | 2010-01-25 | ||
391 | TYPO | In SpinnerOperation.h you declare: I believe the .h needs to be adjusted to handle newSpinner. | 2010-02-10 | ||
217 | TYPO | In the last paragraph at the bottom of the page and in the next paragraph on page 218, “Activity.xib” should be “ActivityView.xib”. | 2010-02-05 | ||
227 | TYPO | In the first paragraph after the bullet points, second sentence, the word “menu” should not be inside the parenthesis with “unused”. | 2010-02-05 | ||
33 | OK | In section 2.2, it says: “Double-click on MainMenu.xib(English) in the Xcode window.” Shouldn’t this be MainMenu.nib ? | 2010-02-10 | ||
29 | TYPO | Second paragraph, first sentence: Should be “..in which to send..” | 2010-02-10 | ||
90 | TYPO | Last paragraph refers to the “NSCopy protocol”. I’m running 3.2.2 and it’s referring to this as the “NSCopying protocol” | 2010-02-10 | ||
105 | SUGGEST | The footnote: made all the difference — but it was only after going back and forth a couple of times. Suggestion: | 2010-02-10 | ||
132 | SUGGEST | Ok, so really a nit: At the start of section 8.2, before saying “In Xcode choose File>New File…” how ’bout an explicit “Open the SimpleBrowser project that we created earlier in Xcode” ((ok, ok, so I’m being even more anal than usual)) | 2010-02-10 | ||
33 | TYPO | “…after a moment of compiling and linking you’ll see an empty window with the title “Window” and a menu bar populated…". In my case, the empty window is titled SimpleBrowser, rather than Window | 2010-03-04 | ||
49 | TYPO | “…Because we chose release as our target instead of build…”. Should this read ‘instead of debug’? | 2010-03-04 | ||
56 | TYPO | “…In Java of C# you might write…”, perhaps should be “Java or C#” | 2010-03-04 | ||
108 | TYPO | “Over time, it will grow and grow, sometimes to the point where is can no longer run (or it prevents other programs running).” Should be: Over time, it will grow and grow, sometimes to the point where | 2010-03-04 | ||
113 | TYPO | “First, I want to show you where the Garbage Collector can and can’t help with when it somes to the mem- ory attribute for properties.” Should be: “First, I want to show you where the Garbage Collector can and can’t help with when it | 2010-03-04 | ||
74 | TYPO | Last line contains “ALthough”. | 2010-03-04 | ||
126 | TYPO | Top of the page says: “We still have memory leaks in Greeter.m in the sayHello and description methods. Take a look at the sayHello method.” | 2010-03-04 | ||
88 | TYPO | In the code example the indentation of the second NSLog is incorrect. | 2010-03-04 | ||
91 | TYPO | incorrect indentation of the NSLog in the code example. | 2010-03-04 | ||
62 | TYPO | The line that reads “The equivalent in Java of C# might be something like this:” should read like this: “The equivalent in Java or C# might be something like this:” Change the “of” to “or”. | 2010-03-04 | ||
84 | SUGGEST | In section 4.8 Further Refactoring the code used is Previously, we were told to use I’m a little confused. | 2010-03-04 | ||
214 | OK | First paragraph following the code snippet at the top of the page is: You ask the delegate if it implements the method before you call it. You What I see is: 2010-02-17 15:00:22.688 HelloApplications[7655:a0f] We’re on our own. I’m a bit confused….. | 2010-03-04 | I've rerun the code following the specified steps and I still get the results I describe. I'm not seeing what you see. | |
227 | OK | Last paragraph before 13.8 reads: Before moving on, remove all of the highlighted lines in the header and I have no idea what you’re talking about here :) What “highlighted lines”? Do you mean remove all the code we just entered for the mutable dictionary only??? | 2010-03-04 | the lines that are highlighted in the code listing, changed | |
259 | ERROR | At top of the page, you show the output example with app icon with the application name, but you \t((IconView *)self.view).appName = app.localizedName; into IconViewController.m > displayColor method yet, so no name shows up. | 2010-03-04 | ||
273 | TYPO | 2nd paragraph of text on the page is: Back in Xcode, you should have added these two methods to your What’s the “HelloAppTableViewController”?? Do you mean “Activity Controller”? | 2010-03-04 | ||
278 | TYPO | LAST PARAGRAPH ON THE PAGE STARTS WITH: “Build & Run.” arrrggh ARRRRGGGGGHHHHHH!!!!!!!!!!!!!!!!!!! Maybe you didn’t really intend for someone to follow along in the book and type the code as he went — maybe you really intended for someone to keep re-loading the sample code…… ARRRGGGHHH!!!!!!!!!!!!! Up until “Build & Run”, you don’t mention the little detail of including BanishedApps.h in ActivityController.h and adding the banishedApps instance variable………. Ok, so maybe I’m too cranky about this…. | 2010-03-04 | ||
294 | SUGGEST | (Just a nit:) When you show the code snippet for chooseViewer, you use: it’s a bit confusing for newbies. Yes, in NSNibDeclarations.h it’s #defined as “void”, but in your earlier example of toggleLoadSavedRemovedApps: you use: A reminder here or somewhere earlier in the text would help avoid this confusion. | 2010-03-04 | ||
306 | SUGGEST | Last paragraph on page: Add another Objective-C class named BookshelfController. For now, BookshelfController will contain a single PragBook instance. Just for context, and for newbies, you might remind us to make it a NSWindowController instead of the default NSObject. | 2010-03-04 | ||
173 | ERROR | “You need to add this method to SimpleBrowserController.m” -> “You need to add this method to BrowserController.m” | 2010-03-04 | ||
111 | TYPO | “it’s reference count never reaches zero” -> “its reference count never reaches zero” | 2010-03-04 | ||
306 | TYPO | Typo in my suggestion #42337: Last paragraph on page: my reference to “NSWindowController” should be “NSViewController” (dang, there goes my smug little grin) | 2010-03-04 | ||
222 | ERROR | The first code fragment in section 13.5 shows a respondsToSelector: test in applicationDidXxx:; however, these tests were removed as an optimization at the end of section 12.9 (Cleaning Up). While you do mention that you reinserted this check a little further down, the reappearance of the test in the first fragment is potentially confusing, since it does not reflect the current state of the code, if the reader has been working through the exercises. | 2010-03-04 | ||
227 | ERROR | “Before moving on, remove all of the highlighted lines in the header and implementation files for CurrentApp”… Er… what highlighted lines? I’m not sure what you mean here. | 2010-03-04 | ||
226 | ERROR | “When I run the application and start up iCal and Safari and then quit Safari I see this in my console window.” The sample output that follows only appears to reflect starting iCal; there is no Safari activity shown. | 2010-03-04 | ||
229 | TYPO | “is contained in the instance of the NSRunningApplication with the key NSWorkSpaceApplicationKey” -> “NSWorkspaceApplicationKey”, with a lower case ‘s’. I worked ahead without looking at the solution, using “NSWorkSpaceApplicationKey” as the key—and couldn’t figure out why it wasn’t working. | 2010-03-04 | ||
76 | TYPO | the code in the middle of this page has two levels of dot notation used “self.window.contentView”, but the prior (and later) listings of this piece of code only have “[self.window contentView]”. Same result, but not consistent. | 2010-03-04 | ||
237 | TYPO | “One of my goal’s” -> “One of my goals” | 2010-03-04 | ||
317 | SUGGEST | Last paragraph of 19.9 tells us we’ve got enough rope to hang ourselves. One thing I didn’t do was to remove the lines in BookshelfController.m (that we just added): -(PragBook *) book { While I appreciate “the rest is left to the student as an exercise”, and I have grown through the experience, and am a better person for it — the subtlety of “book.chapter” vs. “book.chapters” causing the: Bookshelf[8361:a0f] [<NSCFString 0x200095440> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key chapterTitle. error caused me to pause and think you might want to mention it as a “this is why you got that screwy error” footnote or something so that we will continue to revere you as the All-Knowing-Wizard-Of-All-Things-Cocoa that you clearly are :) | 2010-03-04 | ||
339 | TYPO | Last sentence sentence on the page page: “Unfortunately, there currently currently isn’t any support for bindings for iPhone OS.” | 2010-03-04 | ||
183 | TYPO | Second paragraph: “We’re not going to cutomize the (…)” | 2010-03-04 | ||
23 | TYPO | Second to last paragraph: “the the” | 2010-03-04 | ||
212 | SUGGEST | I’m just a beginner with Cocoa and I’ve really enjoyed your book. However, I’ve had a lot of problems trying to get things straight in my head in the chapter “Creating Protocols for Delegation”. The problem is that I’m trying to think of delegation in the same way we did with the Web Browser example previously. In this previous case, the WebView object had delegates that we put in our Control object. Those delegates names like WebFrameLoadDelegate with specific methods that were implemented in our controller class. The names of the delegate set had Web in them which linked them to WebView in my mind. In the Chapter 12 example, however we call the delegate file ActivityMonitorDelegate. To be consistent with WebView example, shouldn’t we call this delete .h file CurrentAppDelegate? I was having a really hard time trying to understand this chapter because it looked like ActivityController was using the delegate ActivityMonitorDelegate to point to Activity Controller (sorta) [incorrect understanding I now realize]. Anyway, for me it was very confusing until I realized if the delegate file was simply renames CurrentAppDelegate everything would be consistent with what I already knew from previous chapters. (Hope I’m right - if not, it would be great if you could let me know, though I’m sure you’re probably way too busy for that). | 2010-03-04 | Sure - the key is that the delegate is responsible for performing actions for the delegating object. Take a look at my window delegate example - does that help? | |
106 | OK | After removing the instance vars, shouldn’t only having name as an argument to initWithFormat: in the description method fail? Should this need to be changed to self.name? When I tried this it didn’t fail when I left it as just name. | 2010-03-16 | ||
65 | TYPO | The last sentence of page 65 and the second sentence of page 66 are the same. Seems like a duplicate paragraph. “The WebView object sends a message back to the object sending the takeStringURLFrom: message asking for its string value.” | 2010-03-16 | Thanks, one is illustrating the other | |
31 | ERROR | I’m using Xcode 3.2.2 (Pre-release) (the beta 5 with iPad support) and the SimpleBrowser throws an error and won’t start unless I add the WebKit Framework to my project first. The text says “It is part of a separate frame- work that you will have to link into your project later using Xcode.” but this is never described before running the app. I suspect this is due to me using 3.2.2 of Xcode but figured I’d pass it along anyways. | 2010-04-01 | ||
65 | ERROR | The book states: "Fortunately, the Cocoa Application template created an application del- egate for us named HelloWorldAppDelegate. You’ll find the source files in the Classes folder under Groups & Files. (footnote 2) (footnote 2) 2. If you don’t find these files, you are probably using Xcode version 3.1 or earlier and need to move to Xcode 3.2 or later." I’m using Xcode 3.2.1 and it DOESN’T create these files. If there’s a switch that needs to be set, please make that clearer. Thanks. | 2010-04-01 | ||
197 | OK | I do not get any output from the initial version that is not tied to the HelloApplicationAppDelegate: [Session started at 2010-03-28 10:46:17 +0800.] Debugger stopped. This is a fresh install of 3.2.1 for iPhone on a 64-bit for a 64-bit. It works fine once I tie it together — perhaps the GC or the optimization is more aggressive in this target? -Paul | 2010-04-01 | Sorry but I'm unable to see what you're seeing. | |
64 | TYPO | The erratum I reported yesterday has been resolved. I’ve removed Xcode 3.2.1 from my Mac and installed 3.2. It now produces results identical to those shown in the ebook. | 2010-04-01 | ||
252 | ERROR | You do not see this “default” look until you add the following line to IconViewController.m: ((IconView *)self.view).appName = app.localizedName; This isn’t mentioned (shown) until the bottom of page 253 | |||
21 | TYPO | In “Starting Fresh”, the sentence “These problems manifest themselves in different ways but are often surface when dealing with nib files.” should be “…but often surface…”. | |||
87 | TYPO | “The return type ofinitWithName: is id.” There should be a space after “of”. | |||
88 | TYPO | In footnote 2: “We’ll look at theIBAction return type in Chapter 7” there should be a space before “IBAction”. | |||
168 | SUGGEST | For the following code: - (void)webView:(WebView )sender didReceiveTitle:(NSString)title forFrame:(WebFrame *)frame { I’ve found that the delegate method is called for iframes within a page as well, changing the window title to it’s title. You might want to change it to the following and mention the issue: -(void)webView:(WebView )sender didReceiveTitle:(NSString)title forFrame:(WebFrame *)frame { | |||
53 | TYPO | The text reads: The return type of goBack is BOOL. You can see by the Discussion section that in Objective-C the two boolean values are YES and NO and not true and false. In fact, this is contained in the Return Value section in the figure. | |||
54 | ERROR | The footnote states that the return type of goBack: is IBAction, but the documentation seems to clearly indicate that it’s void. This could be a quirk of Apple’s documentation; searching for goBack: in the documentation browser shows that PDFView’s goBack: method does return IBAction. | |||
17 | TYPO | “They are unfamiliar, so your first instincts won’t always be right. but in no time you’ll be typing in what you assume the method” Shouldn’t the fullstop after right be a comma? | |||
101 | SUGGEST | The code in Hello World 16: | |||
112 | ERROR | Text in penultimate sentence before section 7 - | |||
114 | ERROR | First sentence on page: “Choose the menu item Build > Build & Debug. You should see a boilerplate message in your Console window followed by something like this:”. I cannot get this to work whatever I do including cleaning target and using the downloaded code. | |||
114 | ERROR | If I use the downloaded code for Flashlight4 I get the following response minus the last line: “Greeter name: Maggie created: 2009-09-18 14:24:43 –0400 There does not appear to be a reference to Flashlight 4 in the text. | |||
168 | TYPO | Doesn’t the line of code: | |||
126 | TYPO | Second paragraph from the bottom. There is a ‘space’ missing before IBOutlet. | |||
178 | TYPO | The paragraph preceding Section 10.3. contains the sentence: | |||
211 | SUGGEST | The code for this section contains an instance of ActivityController ac. This is used as an outlet from the AppDelegate but it serves no apparent purpose and is very confusing. The code runs perfectly well when all traces are removed. If it does have a purpose please explain it, if it doesn’t please get rid of it. When one is trying to learn such inconsistencies cost a lot of time and effort. | |||
235 | TYPO | Either the last word on the page should be NSTextField not NSTextView or the HelloApplication18 download is in error. | |||
228 | TYPO | The download HelloApplication18 contains currentApp in HelloApplicationAppDelegate, it appears to serve no purpose and is confusing. If it does serve a purpose please explain it. If it doesn’t serve a purpose please so indicate in a footnote. Poor beginners such as myself can waste a lot of time chasing the function of such items | |||
16 | TYPO | Typo in paragraph 2: “You’ll be tempted to hold on the way you used to do things.” should be “You’ll be tempted to hold on to the way you used to do things.” | |||
58 | TYPO | Last paragraph, 2nd sentence starts “I’ll add code some of” should be “I’ll add some of”. | |||
90 | TYPO | In section 5.3, the setter method initially reads as “-(void) setName:(NSString *) name;” while it should be “-(void) setName:(NSString *)newName;”. This mistakes is corrected on the very next page when the implementation is shown. | |||
282 | SUGGEST | You suggest typing in the short plist file (or constructing it programmatically). It is much easier to use the Property List Editor which comes in the Utilities folder. This would also give new users a taste of using the Property List Editor. | |||
321 | SUGGEST | Here is another way to solve the problem of several observations: use the context variable. In Display.m, awakeFromNib, use [counter addObserver: self forKeyPath | |||
69 | ERROR | This line in the sample code under section 4.10 ‘Logging Objects’ produces 2 errors ‘LINE’, and ‘FILE’ not defined: | |||
212 | 202 | ERROR | Error or not error? - You are writing: “Click Build & Run, and your application should run exactly as before. My code is exactly the same as your code I have downloaded. I have never received a notification when application terminates. Principally, how could ‘Terminated’ be displayed after the application has terminated? Should we not apply something like ‘applicationWillTerminate’ or ‘applicationShouldTerminate’ to get an appropiate message? Gerhard | ||
232 | ERROR | After the following of chapter 14 - Multiple Nibs, i’ve discovered that it is possible to resize the window when it runs. When you start resizing the NSImageWell and NSTextfield start flying all over the window and out of it. I compared it with the sample code (Multiple Nibs - hello applicaton21) and this too has the same “strange” behaviour. The setting of the setContentSize does work well initially, but i think somehow the view should lock. | |||
195 | TYPO | In section 12.3, “The delegate was a WindowHelper object that extended NSWindow” should be replaced by “The delegate was a WindowHelper object that extended NSObject”. | |||
109 | SUGGEST | Omission: A common error is to leave the dropdown on the topleft with “Device” selected. Any unregistered developers would then see an error. It would be helpful to add in the suggestion to select “Simulator” before the beginning of “Click Build & Run” on the 5th paragraph. | |||
40 | SUGGEST | The book states: “In the top-left corner of your Xcode window, you will see the warning that the application is In the bottom-left of Xcode windows I see: | |||
212 | 202 | TYPO | Solution of the problem: Solution: Because OS 10.5.8 does not support Xcode 3.2.5, I use running Xcode on a server (mini Mac OS 10.6.6. Intel Core 2 duo) remotely administered on a PowerPC G5 (OS 10.5.8). When opening iCal or any other program on that local administrator computer which does not host the running Xcode the problem shows up. But when iCal or any other program is opened on the server (where Xcode and the code is running) then the code works correct. - Sorry for my misleading question: Error or not error? … | ||
205 | ERROR | The 3rd footnote states an Objective-C protocol is similar to an Interface in Java. | |||
171 | TYPO | The sentence in footnote 5 has an agreement problem: “Other methods we often use … is …” should be “Other methods we often use … are …” | |||
316 | ERROR | “I’ve chosen to update the display with the new value that I pull off the ”change" dictionary. Line 5 reads: In fact, the author is pulling the value from the object ( in this case, “UpOrDown” ) this call seems to fulfill the intent of the author. [self updateDisplay:[change valueForKeyPath:@“new”]]; | |||
283 | ERROR | In the loadView method, I found I needed to replace | |||
283 | ERROR | In the loadView method, I found I needed to replace | |||
41 | ERROR | Not so much an error, but the later versions of Xcode (mine is 4.2) don’t have Add > Existing Frameworks. This describes this is the new gui steps for adding the webkit framework: stackoverflow.com/questions/3352664/how-to-add-existing-frameworks-in-xcode-4 Of course, many other things have changed in XCode 4, but Just listing this in the errata would have saved me a bunch of time poking around trying to match things up (most other things up until there had been easy enough to guess around). Great book so far, thanks! Hoping there’s an update for XCode 4.x in planning… |