First of all, let me say that if your goal is the same as mine, to learn how to make iPhone apps starting from scratch, this review will help you decide whether or not this book is for you. I would like to point out that prior to reading this book, the only programming knowledge I had was C (only basic ideas - no actual programs were made). I had no other prior programming experience.
After reading this book, did I know how to use text input boxes, make an alert display on the screen, or create a simple app that moved from one page to another? Unfortunately, no. This book focuses mainly with major ideas and concepts of the Objective-C language. That is, how the language is structured, some major and commonly used methods (or functions in other languages), and general tips while making an app. The book finally begins teaching how to actually make an iPhone app (containing buttons and a user interface) in the last chapter. Even so, the last chapter only teaches you to make a simple "Fraction Calculator" app with only some buttons and a text area to display the result. Because of this, don't expect to know how to make even the simplest of apps after reading the book. This book only gets your feet wet.
You should get this book if:
- you are starting to learn the basics of Objective C
- you learn well with step by step instructions along with explanations of the instructions/code
- you like the idea of chapter examples/problems that force you to figure things out on your own and do external research
- you like the idea that this book provides an online forum dedicated to this specific edition of book (including previous editions), where you can ask questions
Don't expect:
- to know how to turn your ideas into working apps after reading this book
- that this is the only book you need
- that this book will be a quick and simple read (unless you pick up code easily)
- to be able to learn everything in the book by skimming or skipping sections
----------UPDATE (July 20, 2012)----------
Ever since this review has been written, I have been actively using and playing around in Xcode, following video tutorials online, and searching whatever code I don't know/understand online. In my opinion, I've learned more information about Xcode and making apps for the iPhone than this book has taught me. Looking back, however, I realize that you DO need a good foundation of Objective-C knowledge, which this book provides. It might be possible to learn iOS programming by starting with video tutorials, but if you don't understand EVERYTHING about the tutorials (such as the code, the outlet connections, why something was done, etc.), I suggest you brush up on the basics.
My tip to those looking to learn iPhone programming is to first get a good understanding of the basics of Objective-C from this book. You don't need to memorize or completely understand every method taught in this book, but at least get the general and basic idea/purpose of them. After reading this book, your next step should be to look at tutorials online, whether they are video tutorials or text/image based tutorials. Start from the basics, one by one. I suggest learning how to use storyboards first, as this book does not cover storyboards sufficiently and can be very useful in the future. Next, learn user interface elements. For example, start with the UIButton. Learn how to put it into your iPhone screen's view. Then learn how to create a method for when it is pressed by the user. Next, learn how to add code to that method and test if your UIButton works. A good online tutorial will teach you all of these things (and possibly more). If you do feel that you don't get something while following tutorials, look online for help/documentation or ask someone who can help you. If you have a great amount of difficulty following tutorials, then you might need to go back and brush up on your basics.
In conclusion, after you read this book, you should build up your experience of actually building apps that involve user interface elements as well as the code associated with those user interface elements.