iOS Programming for .NET Developers Book Review
Description: This book is a field guide for .NET developers exploring the foreign world of native iOS programming. It explains the iOS development platform by comparing and contrasting with tools, APIs, and concepts familiar to .NET developers.
Cliff notes review – Excellent book that gives you enough foundation to get started writing iOS apps! I would highly recommend it.
I recently read iOS Programming for .NET Developers by Josh Smith and I must say that it was a very enjoyable read. I am very familiar with Josh’s work in the XAML space with his Advanced MVVM book and his very popularMSDN article on the same subject. So as soon as I got the book, I knew that I would be reading something coming from a hardcore .NET (XAML) guy and was happy that he was sharing his experience moving to Objective-C with a .NET background. With that said, as with most of my book reviews, I tend to keep it to a few paragraphs and let the reader decide if they want to learn more about the book.
The first three chapters introduces you to the brand new world that you are about to enter – iOS software development. With that in mind, you need to be aware of several differences including: going from Visual Studio to XCode, Windows OS to the Mac OS, C# to Objective-C, etc... Some of the key takeaways that I received was learning the differences between native, Mono Touch (lets you use C# to develop iOS applications without learning Objective-C) and hybrid. I also appreciated the fact that he walked you through the Mac OS and provides the equivalent Mac OS keyboard shortcuts for things like cut, copy and paste. Chapter three is where it really begins to get interesting as we see the project templates for an iOS application and the Xcode IDE for the first time. Josh clearly explains how the work spaces differ from Visual Studio and even talks about source code control.
The next five chapters are all about going from C# to Objective-C. You’ll see things such as the iOS equivalent to C# Namespaces, using statements, methods, constructors, lambas and so forth. It’s brought together with nice little samples such as: “In C#, calling the method would look like this.” versus “Here is the way we’d do it in Objective-C.” An entire chapter is devoted to garbage collections as we all love how C# manages this for us. We quickly find out that we need to manage our own in Objective-C and Josh shows us exactly how to do that. The next few chapters are about fundamental differences that we must overcome such as going from System.* to NS*. Things such as strings, boxing, arrays and much more are also covered. My favorite chapter was going from XAML to UI-Kit. Josh even lays out the iOS equivalent of a XAML control in a nice, easy to read chart. He wraps up by showing you the Interface Builder, where you create your UI and do things such as change a button’s text color to the various event of a button like “Touch Down”. By the time you get to the end of Chapter 8, you will have a solid foundation on the differences between the languages.
Now that you have a solid foundation, Josh begins to fill in the missing pieces with all the necessary things modern mobile applications needs. Things such as calling web services, working with XML and JSON to inspecting HTTP traffic. He then dives into the core data framework which manages large sets of data and we are exposed to SQLite. The book wraps up with debugging techniques and unit testing, which we all know that no app is without bugs. Josh shows you the best way to track them down. He also gives you a compare and contrast between two popular unit test frameworks available.
All in all this book was well worth my time reading it and I thoroughly enjoyed Josh’s style of writing. I haven’t written my first app yet as I wanted to test the waters first and see what exactly I was getting myself into. This book will explore the differences for any .NET developer and let you make your own choice to jump in or jump out. I personally am very interested in the platform and would love to publish my first app regardless if I make any money from it or not. I just want to be aware of the various options mobile consumers have today. I am still very much in love my Windows Phone 8 device, but it never hurts to see what is on the other side!
Thanks Josh for the great book!