Author: Matt Drance & Paul Warren
Publisher: Pragmatic Bookshelf
Aimed at: Existing iOS developers
Pros: Non-trivial recipes, excellent discussion
Cons: Leaves you wanting more
Reviewed by: Harry Fairhead
A code cook book always seems like a good idea, but so often they fail to deliver simply because the recipes amount to how to boil water or open a packet.
So can iOS Recipes do any better?
One of the big problems with a cook book is knowing where to start. In this case the introduction simply starts off with a brief overview of what Objective C features have been made use of in the recipes and why. It is a shame that this bit comes before the acknowledgments and isn't mentioned in Chapter 1, because there are bound to be a lot of readers who skip it and miss a valuable resource.
Chapter 1 is a set of 14 recipes on the UI and you can tell immediately that reading the book is going to be useful and educational. The first recipe - add a basic splash screen transition - is a simple task, but at least it isn't down at the level of "I want to create a "hello world" complete beginner's example". The problem is described and then the approach taken to implement a solution is explained.
The good news is that the discussion of how to do things is always excellent. Then the code is presented in small chunks accompanied by more explanation of how and why. The code is well presented and looks easy to read and there are a few screen dumps to let you see what is supposed to happen. The most important aspect however is that right from this first recipe you are being told something that is mostly non-obvious. OK, if you had woken up and decided that you wanted your splash screen to transition smoothly to the UI then you might well have invented this way of doing the job in a few minutes, but the book both alerts you to the possibility of doing something better and makes it easy to see how.
From the splash screen transition we have recipes for all sorts of useful stuff including customizing controls and more ambitious complex controls such as the recipe for "Scroll and infinite wall of album art".
Chapter 3 is a collection of 8 table and scroll view recipes. These might not be quite as flashy as UI recipes but they are still useful and provide ways of organizing things that go beyond the simple table view for example recipe 22 is about building a carousel paging scroll view.
Chapter 3 sort of returns to the UI in that it presents 8 graphics recipes. The early recipes are small and are about doing things like drawing gradient fills, dynamic images, animating a gradient layer and so on. The final one is, for me at least worth the price of the book. It presents an easy solution to implementing a page curl animation without needing anything complicated like OpenGL. I'm not going to tell you the method used because that would like giving away the plot of a novel but it is relatively clever.
Chapter 4 presents just four networking recipes, but they are good ones - tame the network activity indicator, simplify web service connections, format a simple HTTP POST and upload files over HTTP. Not rocket science but things that are useful and lead on to bigger things.
The final chapter is about runtime recipes which is a catch all for system and programming issues. There are six recipes and the first two are about programming - Objective C class design and debugging. The remaining four are on how to interact with the system in better ways - smarter user default access, traversing view hierarchies, a base data model and storing data in a category.
This is one of the best cook books I have encountered. For one thing it really is a cook book and not an introduction to the subject. A cook book should tell you how to do things that are a little bit tricky and always useful. As always which recipes you will find useful and non-obvious depends on what you are trying to do and on what you have done before but my guess is that you will find a big chunk of this book useful and all of it readable. Obviously it isn't for beginners. If you are a beginner go away learn iOS development, create your first app and then come back and improve it with a copy of this book. If it has a defect then it can only be that it is too short - but better this than padding the book with trivial recipes.
Highly recommended if you are a reasonably experienced iOS programmer.