When I heard there was going to be a revised edition of this book I immediately preordered it. This was well over a year ago, so when it finally came out I was at first disappointed to see many references to out-of-date material. For example the book discusses GCC which has been phased out by Apple in favor of LLVM. Garbage collection it touted as a big new feature, but it has not caught on at all. Finally, the product description says the material is based on MacOS 10.5 and 10.6 (we are at 10.7 currently if you are counting).
Also, it is extremely annoying to be charged a premium for the kindle edition over the printed copy. I guess this isn't the author's fault, but still, not cool Amazon.
Ok, now the good stuff, and the reasons I gave this book 4 stars. This book has a huge amount of really useful information, and it is presented in a form that makes looking stuff up quite easy. My favorite material presented in this book is the coverage of macros, dynamic libraries (the dyld family of functions), memory management, CFRunLoops, and the section on debugging. Although the product description seems to date the book (mentioned above), this is actually not that important. Almost all of the discussion of GCC can be applied to LLVM. While there are many books that cover UNIX programming, there are very few that focus specifically on MacOS. Similarly there are a lot of books that cover high-level Cocoa programming, but few that dig into lower level details. This book does a great job presenting these UNIX'y, lower details from the perspective of a Mac developer.
For the next edition of this book, a couple of things I would like to see:
- Less coverage of the most basic UNIX stuff (i.e basic file IO, socket programming). That stuff has been beaten to death and is the same as it was 30 years ago.
- Dedicate a few pages to Mach ports. This is a fundamental Mac technology yet there is so little information on it.
- Discuss XPC / Sandboxing
In conclusion, I would highly recommend this book to fellow Mac developers looking to take the next step from The Big Nerd Ranch's seminal book on Cocoa programming. Don't let the out-of-date references put you off, there is a wealth of information here that is completely applicable and relevant.