I suppose I shouldn’t fault this book: its title says it’s a cook-book, and that’s what it is. After a rather long, often sententious, and (in my opinion) wrong-headed, introduction to programming in Objective C (I say wrong-headed because for no obvious reason the author seems to believe that instead of embracing the final arrival of automatic memory management, developers should carry on with the nightmarish mess that was memory management pre-ARC), you get an extended ‘press this button, click that selector’ introduction to interface-builder, and then a whole load of recipes. Now the recipes are not in themselves bad or useless. Except for a few points.
First, no effort is made to get you to explore beyond what happens in the recipe, so the author doesn’t explain why she’s done what she has, she doesn’t discuss alternatives, or tell you what the classes she’s using are capable of. So you end up knowing how to do what she showed you, but not knowing how to change it to be what you want. So, there’s a whole chapter about ViewControllers, but the precise relationship between a NavigationController, a ViewController and a View are never properly explained. Second, and more important, she doesn’t show the context in which her recipes sit. For example, one recipe involves building a stack of views on an iPhone screen, with forward and backward buttons. The code shows us how to get from window n to window n+1 and back again. But – it doesn’t show us how the application gets to window 1 in the first place. With any large-scale graphical framework, be it Cocoa or X-Windows, getting the whole thing up and running is often the hardest part. Now, I believe you can download the complete code for the recipes, but not explaining how to initialise code is inexcusable.
Stepping back, the book makes no real effort to instill understanding. As I said, there is a complex relationship between Apps, Navigation Controllers, View Controllers and Views, but that is never made explicit. And the chapter on Core Data is simply woeful: instead of trying to explain how it does object-relational mapping, it simply tells you how to click on XCode to make pictures. This is symptomatic of the basic problem with the book: it does not teach you how to use Cocoa to build an App for iOS5: it shows you some neat tricks that you could use if you already knew what you were doing. As such, this will remain on my book-shelf (unlike the woefully awful book from O’Reilly), but it certainly won’t be my first reference.