This article is about what I have had to do, as someone with a Microsoft technologies background, to get setup to write an iPhone app. I ended up getting my Samsung NC10 netbook to dual boot Windows 7 and MacOS X Snow Leopard so I could achieve it.
The first problem that I needed to solve was the development environment. To write a native iPhone app you need a Mac and the Xcode IDE. Xcode is available for free download as part of the SDK at Apple’s developer website So all I needed now was some hardware to run it on. The simple solution would have been to buy a Mac, checking out the prices I would have had to pay about £800 for the cheapest MacBook – ok it’s a good looking bit of kit, but in my opinion it’s overpriced and specs aren’t that great compared to PC’s you can get for the same money. I am only doing this for a bit of fun and this is way too expensive. What to do then?
Well after a quick search on the Internet I found that it is possible with create a Hackintosh. This is essentially a PC which has very similar hardware as a Mac so MacOS can be installed and run on it. As it turned out my netbook (Samsung NC10) could be turned into a Hackintosh :).
I purchased Mac Mac OS X Snow Leopard v. 10.6 (Mac DVD) for £20 from Amazon and set about getting it installed. Now I must add here that it is against the terms and conditions to install MacOS on anything other than an Apple Mac, however my view is that this would not stand-up in court. Microsoft were forced to open up Windows to other software companies and I suspect that a similar opening up of MacOS to hardware companies might be enforced if it ever got taken that far.
I found a great article with step by step instructions on how to Dual boot Windows 7 and MacOS on a Samsung NC10. It did mean I had to purchase a couple of 8Gb usb drive (£10 each) but I would use those for other things anyway. The other thing you need is to borrow a real Mac to create the MacOS Usb drive, but that only takes an hour or so.
So now I have a computer with Xcode on it, now what? Well you have to then learn all about Objective-C to build an iPhone app. I tried the docs that came with the SDK but they were very dry. I have ended up purchasing 2 books, Beginning iPhone 3 Development: Exploring the iPhone SDK and Cocoa Programming for Mac OS X. I have started with Cocoa Programming for Mac OS X as this will give me a grounding in Cocoa and Objective-C before I move onto trying to create iPhone specific apps. While I love the authors enthusiasm for Objective-C, I personally I have a couple of problems with it.
1) Objective-C is less intuitive that other OO languages. I primarily use c#, but have also written apps in Java and ActionScript3 which were much easier to learn.
2) I find the Xcode tool is harder than it should be. I would say it is about at the level Visual Studio 6 was with separate IDE’s for different features. There is XCode for coding and Interface Builder for creating visual forms and it is a much more complicated process than it should be to link the frontend (IB) to the backend code (Xcode). If you look at the latest Visual Studio from Microsoft or Eclipse (which I use for AS3 coding) these are much better tools for developing software as they allow you to concentrate on solving business problems rather than making you do lots of plumbing code to make the app work.
So I am now working my way through the various “Hello World” applications and getting better at using the Xcode and Interface Builder tools required to create an iPhone app. Hopefully in a few weeks I might create something half decent!
My conclusion is this, Apple have made a great product for the masses with their iPhone. There are 1000’s of apps out there for it and it has advanced mobile computing. I can see them being dominant for the the next 2-3 years at least. However other vendors are catching up LG and Nokia’s n900 have new handsets based on Linux and they look fantastic and are far technically far superior to the iPhone. Plus the barriers to entry for developers to build apps are much lower and there is a massive dev community already out there who will be able to cross train very quickly. I have given up on getting excited by Microsoft smartphones as they have been around so long but have failed to capture the public’s imagination. So my prediction is the iPhone will be put into second place by a linux based phones in around 3 years time because Linux will have the better tools for creating apps.