This post is the third in a series on the book Xcode 3 Unleashed, by Fritz Anderson. I’ll wrap up the review in this post by covering both highlights of the book and suggestions for future editions.
Let’s begin with the highlights of this book, and there are many. You’ll notice from the moment you crack open the book, it’s filled with color. Not just color figures, all code examples are in color, as in, color syntax highlighting. And the colors match what you’ll find in Xcode, how cool is that?
The author does a nice job of calling out concepts that have not yet been explained, or are otherwise outside the scope of the book. You’ll find notes about points of interest based on the topic on hand, explanation of terms used that are to be covered later in the book, as well as insightful tips/tricks.
The integration of concepts into the examples is well thought out. For example, when moving from the command line version of the application to the MVC design pattern, Fritz opts to use the command line tool as is, and essentially embed the tool into another project. This is a nice approach as you get to see how to work with application bundles, targets and dependencies.
The coverage on most all topics is quite deep. This is a good thing from the perspective of the sheer volume of information available in the book. Which is a good segue into talking about areas where I think the book could be improved upon for a future edition.
Continuing the thought from above on deep coverage of information, to his credit, it’s obvious that Fritz clearly knows Xcode and development on a Mac. And on that same line of thought, this experience is used any number of times to deep dive into various topics. The downside is that unless you are experienced with Mac development, it’s easy to get lost in the details. The back cover of the book lists the "User Level" as beginner to experienced. For the former, it would be helpful to offer smaller, bite size examples to grasp concepts. More than once I found myself longing for more self-contained examples, rather than always building upon one example throughout the first section of the book.
In Chapter 20, Navigating an Xcode Project, the author covers many of the nuances of working with the Xcode development environment. From my perspective, I would of found this much more valuable as an early chapter in the book. The reason being, since most all topics revolve around using the Xcode environment, I think a better understanding of the interface would be helpful as one goes about building projects and learning other concepts.
Although the book does a good job of integrating concepts into the examples, the one drawback is that without clear references to such information in either the Table of Contents or the index, if you ever want to come back to the topic at a later date, it can be hard to track down. This realization came about when I was reading about how to integrate one project into another (mentioned above as a highlight of the book) and when I thought about how I would find this information again in the future, I couldn’t find a reference in either the Table of Contents or the index. Not a big deal for sure, however, the little details such as this would go a long ways to make this book a good reference for the future.
Although not possible given the date of publication and the fact that the iPhone SDK is still under NDA as of this writing, and maybe more of a personal preference than a suggestion on the book as a whole, I would find it helpful to see examples that reference content specific to the iPhone. For the most part, working with Xcode is platform agnostic, however, there are examples that build upon classes such as NSDocument that are not available in the iPhone SDK. This is not to be taken as a criticism of the book, more of a thought provoking comment as how the book could evolve for a future addition.
All in all a very good book, with extensive coverage on all things Xcode. Good use of examples, quite readable (the color coded examples and figures are a nice addition) and written by someone cleary well versed on developing applications for the Mac.
I’ll wrap up this series of posts on Xcode 3 Unleashed by posting two tips that are derived from information in the book.