I’ve recently finished the functionality of my first native iPhone application. Here are some thoughts:

  • Apple makes it easy to “do the right thing” as far as the UIKit libraries go, pretty nice, and cleaner & easier than Swing or .NET in many ways. Very humanistic.
  • Unless I’m missing something, common tasks like field validation don’t seem to be built-in, that’s a hassle…
  • No SOAP libraries yet either.
  • Interface Builder isn’t quite there yet - many components still missing, so unless you’re doing a pretty simple UI, better code it by hand (which isn’t really that bad…)
  • I’m not a huge fan of XCode - the code completion is very weak compared to eclipse, as is the display of errors/warnings - many more clicks/research needed to diagnose what’s going on.
  • Managing your own memory sucks…
  • Since I’m coding the UI by hand, lining things up pixel perfect is quite a hassle. I’d be nice if they had the concept of a layout manager, like Swing/AWT, laying out components in a grid is not intuitive (many examples I’ve seen use UITableView and a whole mess of ugly switch statements - very inconvenient & hard to maintain.)

The application is a front end for a project I’ve been working on for the last few months. The backend of the project is very involved, lots of data flying around, and much analysis, the end result of which is exposed via a few web services. One to find a location based on name, lat/lon, etc, and one to get news near that location (sort of like topix in some ways).

So far, everything is functional. The next steps will be to refactor how the data & events flow between components of the application - I now have a good grip on what a good architecture is for iPhone applications, and will be able to clean up the code considerably.

Overall, it was fun to learn a new language, the SDK wasn’t too painful, and the application will be pretty darn slick. I’d be cool to do another - so if you know someone that wants an iPhone application developed, let me know!