Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Название: Cocoa and Objective-C: Up and Running: Foundations of Mac, iPhone, and iPod touch programming
Автор: Scott Stevenson
I would agree with the previously-reviewed notion that this book as an absolute beginner's guide is misleading. I happen to be an experienced programmer who works day-to-day in an object-oriented language (but not Objective-C), utilizing design patterns. I found the shorter explanations useful...I learned a few things and some (Objective-) C concepts were made clear, but I didn't have to wade through pages of "this is a loop. This is a function" that gets tiring to one who understands the general programming concepts. But as one who moonlights as a college professor that teaches these very same concepts, I would expect a beginner to get quickly overwhelmed by this book.
I also feel the book's promise to teach iPhone/Pad programming misleading (the subtitle is "Foundations of Mac, iPhone, and iPad Programming"). Stevenson never introduces iPhone-specific programming concepts, or any of the unique aspects of Cocoa Touch and UIKit. There are mentions of such differences (like the discussion on CGImage, NSImage, and UIImage), but the mention is merely that, and no further information is provided. If you're looking to get into iPhone programming specifically, you can do better than this book. However, this book would supplement another iPhone book well, for its basics on C and Objective-C.
My biggest complaint is the Chapter 9 "real" application. Personally, I don't mind that it took that long to get to a practical app. But the chapter was basically one big "type all of this code in" with pages and pages of code on paper. The introductions to MVC and Core Data were pretty cursory, but I was hoping that through the practical example Core Data would be made clearer, and how it fit into MVC. Also, other topics such as drag-and-drop, fetch requests, and sorting were pretty much presented in the code and never discussed. Stevenson would do very well to refactor the chapter and present it in more of a step-by-step fashion. I found myself longing to hit "Build and Run" just to see something working, but knew that it would be pointless, because I just typed in a big, long class, which is supposed to use other classes that I haven't written yet. I just kept typing and typing, just sort of hoping that all would end well, and that I would have a clear understanding of how the app worked once it was done.
It didn't, and I don't.
What was needed were milestones. You know, just stub in a methods and properties, build and run. NSLog a few things, build and run. Flesh out the details of one of the views, build and run. Give the reader some stopping places where they can test the existing functionality against what they're supposed to see, and also just a stopping place in the reading! I couldn't do it all in one go, and it was difficult picking up where I left off the next day.
The funny thing (funny in a relative way) is that in the very next chapter, Stevenson does *exactly this* iterative approach that I'm talking about. We get into drawing into views, and we start with colors and rectangles. We build an app, and draw a colored rectangle. Hey, it works. Great, let's learn about bezier paths, now. Then move on to graidnets, and images, and then text, and then styling text, and finally user interaction. All the while, we build a simple (not very useful, but still cool enough) application that slowly builds up all of the techniques from a simple colored rectangle to an image with a border, shadow, and sheen, that's scaled properly, has a title that's rendered in a bezel below the image (and is optional) that can be dragged around the view and re-centered with a key press. We had so many stops along the way that it was pretty easy to check your work as you went, and I ended up with a working application, not to mention a much better understanding of these particular concepts. Chapter 10 is the model for what Chapter 9 should have been like.
That particular shortcoming is why I gave this book 4 stars instead of 5. If Stevenson addresses this, I'd happily give it 5. However, you need to be comfortable with a certain skill set before being able to harvest information from this book. That itself is not a flaw, although the marketing that implies otherwise is.