Dr. Kochan's text is not bad. It certainly provides sufficient background to introduce the reader to programming in Objective-C. I enjoy the paragraph prose occasionally interwoven with usage examples. The iOS fraction calculator is also an exciting final exercise.
However, the book has several notable shortcomings that deter readers interested in jumping into programming:
1.) The ordering is odd. Background C programming is presented in chapter 13, in the middle of the text. Even though Kochan justifies its marginality by pointing out that Objective-C is object-oriented and therefore best learned with a fresh mind and non-procedural habits, it still comes before most of the object-oriented Foundation content, specifically strings, numbers, collections. If C really is knowledge that should come after usage habits have been developed, it would better be placed at the end, rather than in the middle.
2.) UNIX references are distracting. My background is in C/C++, so I can understand how UNIX programmers might benefit from analogies, but these references rarely add anything to the material. They are too numerous and distracting. Particularly in the file system chapter, even with a programming background, I had no idea what any of his UNIX references meant, or why they might be useful to know. Furthermore, the author links them to developing command line tools, completely off the beaten path. Why would UNIX programmers be reading an introductory programming book in the first place? These analogies have no place in a book like this, and only further the esoteric feel of programming in an already-difficult area such as file systems.
3.) The code samples stretch on too long without explanation. I understand the need to present code files in complete form, but they need better explanation in between. Reading five pages of code without any explanation is tiring and boring, and even for programmers, quickly makes me want to quit or skip. Explanations sometimes come later, forcing flipbacks to the code section. Breaking up the code with explanations would have been much more readable.
4.) The code samples often do not run. One of the major reasons code is beneficial to read is seeing actual working examples in action. However, outside of the final iOS sections, there are not any self-contained, working Xcode projects or sets of code. ViewController isn't even mentioned until the final 40 pages on iOS. Most of the examples, while syntactically correct, work on mock images and files that make no sense without more context. For example, in the section on file handles, the examples are all @"testfile" or @"path" or @"testoutput" without real extensions. This is very confusing for a reader simply interested in trying out the code on text files, or a local directory, because these files have no extensions, and the book never explains what a real file name might be, in action. The book also comes with no accompaniment files on a website or CD where users can actually run the code to test on real files. The author does not provide adequate real-world examples that might clear the confusion of meaningless place holders like @"imageA" (JPG? PNG? TIF?) or @"newfile" (directory? executable?). These are crucial strings to get right because the slightest missing slash or extension results in a dysfunctional program. Beginners generally have no such intuition, and the author provides no guidance.
5.) Too much deference to Apple documentation. While I understand not pasting in every single Apple doc to save space, Kochan too often leaves readers trailing without as much as a table or a listing of the functions that the documentation is better served to elucidate. Instead, he simply tells the reader to look at the documentation for more. However, beginning programmers generally do not have the motivation to "look at documentation." Where in the documentation? Even a link, a page number, a section title or number, some paths or terms, or even just a screenshot, would be better than the lazy "look at Apple's documentation to learn more." Kochan too often ends a section with "But there are many more functions to the NS.... check your documentation for details." Sorry, your readers are not expert programmers. If we were satisfied looking for, searching, and reading documentation, we would not be purchasing a book.
6.) Not enough iOS-ready examples. Most readers are probably reading the book not just to learn syntax, but to apply Objective-C to programming software, so having only one full-fledged iOS program is unforgivable. The only end-to-end program that Kochan walks his readers through is a fraction calculator for iPhone. While that program is quite exciting, it is not sufficient for an entire book. Even miniature programs would be welcome because they can provide incentive to test out and reaffirm knowledge that Kochan teaches. However, the code snippets throughout the book are both long and not fully functional programs.
In summary, Dr. Kochan's introduction to Objective-C is a good educational source, in a vacuum, but because many readers are likely looking to apply the knowledge as they learn it, providing more examples and functional programs is a must. I was disappointed that after completing the fractional calculator, I had no other walkthrough examples to program.