Most people would agree the iPhone is pretty far ahead of Windows Phone 7; however there is a harsh irony that is only known to developers who use both platforms. The irony is while the iPhone user experience is ledgendary, Microsoft’s development platform makes Apple’s tools look like it is from the Stone Age.
A few examples of developer water boarding:
Pointers still, really?
Pointers are all around you in Objective-C. Garbage collection is a great productivity advance and available on both Android and WP7 for most code. If Apple is going to use a language based on Smalltalk can we at least keep one of it’s best features? Welcome back to non-null invalid object references.
Many nilla wafers = good. Many forms of nil = bad. The concept of a null reference is pretty well established after decades of use. However for iOS apps you have: Nil, nil, NULL, and NSNULL. Yes all 4 needed for different subtle reasons and yes this alone has generated tons of posts from people trying to figure it out. Love it.
ActiveX for iPhone
One of the nasty things about ActiveX controls was that referencing counting was a fundamental requirement to manage object lifetimes and it drove people crazy trying to master and manage it. The iPhone platform, like ActiveX, has referencing counting as a fundamental requirement. In both cases it is the source for many developer headaches.
We don’t need no stinking namespaces
This one is more comic relief than it is a problem. Since objective-c does not support namespaces *every single framework method must be prefixed with NS* to avoid collisions. So everywhere in your code is NS this and NS that. Really this can be funny to look at.
Not all bad
To be fair I’ve been using all the preview releases of Xcode 4 and the IDE has made huge improvements and has some nice features. For example I can set a nice bell to sound when a build is successful right from within the IDE while on Windows you have to do this in the control panel. That’s something isn’t it? :-)