There’s been some ‘grumbling’ (here and here) about some of the restrictions that are placed on application developers and their products if they use the iPhone SDK.
Many of the commenters seem concerned that the SDK is much more restrictive than ‘regular desktop’ development, with restrictions on running in the background, a lack of access to certain parts of the platform, and pieces of functionality present in desktop Mac OS X but missing from Cocoa Touch.
Why are things so different ? Technical challenges ? No. The reason – in two words is: Legal Liability.
I think Apple is very concerned that there is a danger someone would try to use their iPhone in an emergency (to dial 911) and have it fail because of a failure (or out of control) third-party application. If that happens and lawyers get involved I don’t think they’re going to go after small one-person software developers with buggy code. Rather they’ll go for the deep pockets at Apple.
Yes Mac OS X uses protected memory, and is a pre-emptive operating system. But it’s still vulnerable to people using too many resources and there are places in the OS where the failure of one application at the wrong time can lead other applications to fail (for example Disk Notification on the desktop Mac OS X can cause Finder to stall if you fail to respond to the notification request in a timely manner).
Personally I’m grateful for a little care, attention and large walls in this space – my phone is probably more important than my desktop, especially in an emergency, making sure it’s always there when I need it is very important.