Building Cocoa Applications: A Step-by-Step Guide by Michael Mahoney, Simson Garfinkel This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated September 16, 2004. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: ========== NOTE: About the Code Examples in Building Cocoa Applications Several readers have reported errors in the code examples printed in Building Cocoa Applications, and one reader has pointed out a case where the code available on this web page does not match the code shown in the book. In the process of preparing the final versions of the programs included in the zipped file available from this page, the authors discovered some minor errors in the code shown in the book. These errors, which were unfortunately not discovered before the book was printed, will be corrected in subsequent printings to the best of our ability. In the meantime, we obviously want the code available from this page to be as accurate as it can be. We will continue to update it if we discover any additional errors. In addition to correcting errors, in a few cases the authors have discovered better ways of performing some of the operations described in the book. There are only a few such cases, applying, for the most part, to the way that objects are destroyed. Again, because we want readers to have access to the best and most efficient code, we have updated the online examples to reflect these operations. If you have any comments about the code or additional suggestions for improving it, we hope you will let us know. =========== (128) Example 4-5; The second line of this example reads: int main(int argc,char **argv) It should read: int main(int argc,char *argv) [333] 6th line of code in Step 16; path = [ [NSBundle mainBundle] pathForAuxiliaryExecutable:@"Evaluator"]; Should be: path = [ [NSBundle mainBundle] pathForResource:@"Evaluator" ofType:@""]; {383} Step 1 and Step 2; Both in step 1 and 2 the text commands you to edit the non-existent file "MathController.m" file. Of course, there is no MathController.m, and instead you should edit the MathDocument.m file in both steps. {508} FROM READER: Code sample in step 13:; GraphPaper's TrackGraphingView class adds a tracking rect to itself in its initWithFrame method. A working tracking rect is not added to the TrackGraphingView object, because (I assume) the object has not yet been unarchived from the nib file when initWithFrame is called. This does not affect the program's functionality, as a working tracking rect is added when the graph method calls getFormAndScaleView. Nevertheless, this issue might cause confusion when readers attempt to implement tracking rects in our own applications. FROM AUTHOR: We should remove the call in initWithFrame: