Cocoa Programming for Mac OS X (4th Edition) Paperback – Nov 9 2011
|New from||Used from|
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
About the Author
Aaron Hillegass, who worked at NeXT and Apple, now teaches popular Cocoa programming classes at Big Nerd Ranch. At NeXT, he wrote the first course on OpenStep, the predecessor to today’s Cocoa tools. This book is based on the big Nerd Ranch course and is influenced by more than a decade of work with OpenStep and Cocoa.
Adam Preble learned Cocoa programming from the first edition of this book. After too many years of professional C/C++ development, today Adam writes Mac and iOS applications at Big Nerd Ranch, where he is also a Cocoa instructor. He is frequently filling in the gaps between work and family time with pinball machine software development and countless other projects.
Inside This Book(Learn More)
What Other Items Do Customers Buy After Viewing This Item?
Top Customer Reviews
To begin with it focuses on the latest version of Xcode and iOS 5 which includes ARC (Automatic Reference Counting) which is a huge time saver for development. Without ARC you had to manage the memory allocations for your own objects - take my word for it, a PITA if you are new to Objective-C. The book has been updated to work with more code automation in Xcode, using drag and drop to make connections to outlets and actions - another huge timesaver. This is one of the first books on the market to include those. For a beginner or intermediate coder using older books on earlier editions can be very frustrating.
The style in Aaron's books is that he dispenses with the hand holding approach of most of the books I've read. Other books give you a step by step instruction as you go through the things you may want to learn. That approach actually impairs your ability to actually learn. The Big Nerd Ranch approach is to show you how to do something, by dealing with just one or two key concepts at a time. Then they immediately challenge you to put together what you've learned so far. This is completely optional, but a great concept for learning. If you find the challenge too difficult then you may want to review what you've learned previously.
I'll admit when I read the Third Edition I was more of a junior dev in Objective-C and found the going rough sometimes.Read more ›
Most Helpful Customer Reviews on Amazon.com (beta)
After reading Cocoa Programming for OS X, I feel I can say I "get" Cocoa finally. That's not to say I'm an expert, but that I can complete a simple program now, on my own, using the Cocoa frameworks and concepts. As Aaron says in the book, learing the Cocoa APIs will take much longer. I come from a Java background, with only marginal C and C++ experience. Although Aaron does not speak much about the objective-c language itself, that's ok. Apple's PDF is more than adequate to get that background.
There are some things that get glossed over that I wish had been more fully explained, and some things left out altogether that I would have liked to see, such as:
-- Spawning and managing multiple threads, thread safety issues
-- exception handling, debugging and assertions
-- Cocoa "primitive" objects (NSPoint, NSRect, NSRange, etc.), why they apparently don't need to be retained or released, and why they are "NS" objects but don't really behave like them.
-- Calling Toolbox routines or those from APIs that have not yet been "Cocoa-ized" (and integrating the Old Way into the Cocoa Way), with examples. Cocoa is nice but once you get away from building a text editor, you will need to dig into this ugly and unfriendly world at some point (unfortunately). For instance, how do I access the Airport card, how do I open and use a network socket, how can I read a DV-encoded stream from a FireWirePort and save it to disk as a QuickTime movie, how do I access a database, how do I use an OpenGL view?
-- How to customize Cocoa UI elements. Like if I wanted an NSSlider with TWO sliders, a minimum and a maximum. There is an example of subclassing an NSView in the book, but that's just a drawing panel.
To be fair, I'm not really criticizing Aaron for these things. The book has plenty of useful stuff, and I'm sure Aaron wants to write and sell more books, so some advanced Cocoa books that address some of these things as well as others will be welcome...I hope someone is writing them right now. I also hope someone is writing a comprehensive Cocoa API reference, as Apple's is somewhat lacking (Have you seen the phrase "Description Forthcoming" more times than you care to remember? I thought so.)
The bottom line is that this is a great book that is a must-have for anyone interested in Cocoa programming. I'd probably rate it four or four-and-a-half stars, but I'm giving it five for being there when I needed it, and being the first really useful book on the subject. The best thing I can say about it is that I can now do things there is simply no way I could have before.
I found this book to be a great intro to Cocoa without a lot of preaching about how Cocoa will change the world. Carbon vs. Cocoa seems to be an almost religous debate, and I'm glad this book didn't try to overpromise the benefits of Cocoa.
The book is well organized, very readable, and has good examples. It is *much* better than the O'Reilly "Learning Cocoa" book.
After reading this book, you'll be able to start writing applications in Cocoa, and you'll know where to go for more info.
Now, my nits:
* The book explicitly stated that it was for people with a C++ or java background, but I think there should have been more direct comparisions between C++/java and Objective C. For example, saying that class functions (the ones with +) are just like static functions in C++ would have helped.
* This may be an introductory book for people moving from other platforms to the Mac, but the UI for most of the applications violated Apple's UI guidelines in many ways. I think the book should have promoted following Apple's UI guidelines.
* There was no discussion of exceptions, and much of the code was not exception-safe and didn't do much error checking. There wasn't even the usual disclaimer about leaving that out for simplicity.
* I would have liked a quick overview at the end of some of the classes not discussed in the book with a couple of sentences about what they do. This would help to learn what's out there.
I hope to see more books on Cocoa by the author. There's still lots of room for books on more advanced Cocoa topics.
Now for the potential buyer.
WHAT IT IS NOT: a reference book (no list of classes etc...) or a technical book for advanced programming; a book about Java or Carbon; an introduction to object-oriented programming; an introduction to C.
WHAT IT IS: an excellent introduction to programming in Objective C in the Cocoa environment of Max OS X, provided you know enough about
object-oriented programming (some basic understanding of C++ is preferable too).
WHAT YOU LEARN: Objective-C in Cocoa; using Apple Developer Tools; building an application in Mac OS X; how to make optimal use of Cocoa classes and API, knowing how they were conceived and meant to be used; a number of basic concepts and tips that really get you started.
THE PLUS that make this book so interesting: very good and clear writing; some amusing brief 'historical' insights; you really feel the author knows what he is talking about; the author gives personal views (clearly stated as advices, not rules); follow-up, errata, examples, comments, and more on his web site; still completely useable with OS X.2 (a couple or very minor changes that are listed on the web site anyway), so that's the good time to buy it (price is down, but content is still up to date).
Final comment: Objective C in Max OS X is very powerful and enjoyable.
In general, Big Nerd Ranch's books have the feel of something assembled from classroom materials. This is unfortunate - one suspects the classes are terrific, but a great book takes more than that and great teachers are not necessarily good writers. (And engineers almost never are.) In particular, there are far too many rabbits pulled out of way too many hats - "do this - wow!", "do that - kaboom!" - with insufficient background. Demos work great in the classroom where one can ask direct questions, but I'd prefer a book that takes a problem solving approach with clearly defined goals and equally explicit explanations of why certain approaches are superior to others.
The best parts of the book are "Curious" and "Challenge" sections at the end of each chapter, which require independent thought and adapting concepts and techniques to serve actual needs. Would that the whole book had taken that approach. The worst part is the graphic design - the procedural instructions laid out in running text are unnecessarily difficult to follow and the reduced low-resolution screen shots are often barely legible. (Where did publishers get the idea that 72 dpi screen shots are acceptable in a $30 book?) Presenting this sort of information well in a 7" x 9" format is a difficult challenge the book's design fails to meet.
Certainly "Cocoa Programming for Mac OS X, 4th Edition" is better than the competition, but that's damning with faint praise. I found it difficult to use not least of all due to the nagging urge to rewrite it. But whatever the book's flaws, the tone of the writing is just right, the authors are clearly great guys who know their stuff, and they should be complimented for facing up to a difficult subject without any condescending "for Dummies" BS. There's a great deal of useful information I'm sure I'll benefit from revisiting it as my own expertise increases, but in general, the bar for tech writing is set way too low.
not being the quitting type, i began to search for other books on Cocoa programming. i purchased the O'Reilly book "Learning Cocoa With Objective-C", second edition. after reading a few chapters in the O'Reilly book, then going back and re-reading the material in Mr. Hillegass' book, things began to click. since that time, the approach has proven the most useful for me is to read the O'Reilly book until i get stuck on a particular topic, then cross-reference with Mr. Hillegass' book in order to get a different perspective/explanation. in addition, working through *all* of the examples in both books has proven tremendously helpful. if i had my way, i'd combine the material from both books into a single book. :)
in summary, if you buy this book and find that you are having trouble grasping the concepts, try purchasing the "Learning Cocoa with Objective-C" -- make sure to get the 2nd edition -- and see if getting a different perspective/explanation works for you.
Look for similar items by category
- Books > Computers & Technology > Apple > Cocoa
- Books > Computers & Technology > Apple > Mac OS X
- Books > Computers & Technology > Operating Systems > MacOS
- Books > Computers & Technology > Programming
- Books > Textbooks > Computer Science & Information Systems > Operating Systems
- Books > Textbooks > Computer Science & Information Systems > Programming Languages