Whatever comes to mind, and then the interesting directions that thought will take you on the web.

Monday, February 01, 2010

Design Decisions of the iPhone

The design and implementation of the iPhone took some fairly controversial decisions. Decisions that are contrary to conventional wisdom. After reflection, I feel that most of these decisions are correct.

The areas I want to cover are buttons, flashing lights, multi-tasking, app approval process, garbage collector.

iPhone has a very small number of physical buttons - On/Off switch, "Home" button, Volume button and mute button. An old Windows Mobile Phone has 11 buttons, plus an entire keyboard. I find that mixing the user interface across the touch screen and buttons becomes confusing. You become focussed on performing the next action on yhe touch screen, and forget that you have to use the physical button.

Flashing LED Lights
No flashing lights on the iPhone, 2 on the Windows Mobile Phone. We don't need those ugly flashing lights.

Multi Tasking
"Conventional Wisdom" says that you have to have multi-tasking - it's a modern Operating System. This is where I think conventional wisdom has it wrong. The apps running in the background are consuming memory, CPU cycles and battery life. As a user, it is very difficult to manage that. I had problems on the Windows Mobile and the Android attempting to identify and kill processes. I've no idea how a civilian could deal with this. On the iPhone, the running app essentially gets all the memory and CPU, resulting in predictable behavior.

App Approval Process
Controversial, but I feel that I as a user have benefited.
  • Single, consistent place to download apps
  • Generally consistent and quality apps
  • I can trust that the apps are not going to pull in crapware or viruses
I've got to say that the Android App Store is nowhere in comparison

Garbage Collector
The iPhone applications are written in Objective-C. The latest version of Objective-C has garbage collection built in. The version of Objective-C used for the iPhone does not. Why is that? Probably to save power - ie no need to have a garbage collector thread running. But another reason - I feel that it raises the bar for the competence of a programmer needed to create an iPhone app.

No comments: