The Great App Explosion of 2008 sparked something of a renaissance in independent software development. With the creation of the iPhone App Store Apple kick-started this renaissance by giving developers three key things - an exciting platform, a huge potential customer base, and a powerful and flexible development environment in the form of Xcode. Xcode had been about for years as it was the de-facto IDE for Mac application development, but The Great App Explosion put it into the eye line of many developers who would never otherwise have seen it.
Unfortunately when an IDE is good it also tends to be complex and Xcode is no exception. Many books have been written about developing software for iOS and for the Mac and while there are many fine publications they usually focus on the details you need to be a good iOS or Mac developer from an API perspective. What they naturally lack is the information you need to be a good Xcode user. This is compounded by the fact that it is only relatively recently that Xcode 4 has come out of developer preview in order to replace Xcode 3. Many of the iOS and Mac development guides have yet to be updated for Xcode 4. A niche therefore exists for a book that not only explains how to use Xcode itself, but also explains how to use the latest version.
I'm glad to be able to say that the niche has now been filled by Mastering Xcode 4 - Develop and Design
by Joshua Nozzi. This is a book focussed on how to use Xcode 4 and its component tools such as the editors, compiler, the debugger, Interface Builder and Instruments. While it contains some code examples they exist solely to help the reader understand how to use the tools, and not the other way around.
The book is split into 3 parts. The first part is an overview of Xcode which takes the reader from download and install, to creating and building projects, followed by a tour of the user interface. While it may seem like basic material the tour is not only useful to newcomers but also to the experts - the UI changes between Xcode 3 and 4 may confuse some hardened veterans.
The second part is what you need to read if you have a good idea about Mac/iOS apps and know what you want to create, but you're just not sure how to use the myriad of tools that Xcode provides. This section goes into more detail on some of the intermediate activities you may carry out with Xcode. It covers aspects such as user interface design with the newly integrated Interface Builder, project management and source code editing. It also deals with using the Core Data Model Editor, basic debugging and build and deployment of an application.
The final part is where experts will feel more at home. Some of the topics take the earlier chapters and extends upon them. Advanced editing and debugging are covered as well as working with the workspace model which is new to Xcode 4. But it's not just a deep dive on previous material - new topics are also introduced such as fine control of the build system, creating frameworks and bundles, using Instruments and using source code management. You could get by without this section but these chapters contain material which can greatly speed your workflow and help you produce higher quality software.
The book has a light and refreshing feel to it - it's not overbearingly long, the chapters are good bite-sized chunks, and the writing style conveys the author's authority in the subject area without being patronising. It works great as a tutorial and as a reference. Every chapter states its intentions and concludes with a wrap-up. Particularly useful are the sections towards the end of each chapter that explain how the new Assistant feature works with the tool just described.
I've read numerous books on iOS and Mac programming over the last few years. Some are great, some are bad, and some are rightly accepted as canonical for the subject matter. They can teach you to be a great programmer, but only give you the minimum of Xcode knowledge. If you just buy a book on iOS or Mac programming you'll simply get by with Xcode today. If you buy this book you'll master Xcode forever. If you are an iOS or Mac developer and you want to become an expert in this invaluable tool then you need this invaluable book. -- Maurice Kelly