Iphone – iPod Touch compared to iPhone as development platform for iPhone apps

cocoa-touchiphoneipodipod-touch

Essentially I'd like to know just how compatible are the iPhone and the iPod Touch. I would like to know if I could buy an iPod Touch (and thus save some cash) and develop iPhone apps on it or if I really should spend the extra money and put up with AT&T and get the iPhone.

What exactly is different between the two devices (other than the missing phone part in the iPod Touch).

Has anyone done this successfully? Or am I crazy for even thinking it?

EDIT

I've corrected the references to iPod Touch in the text so that @person-b won't strangle me..

Also, i would like to make sure that I point out the fact that I really am interesting in the feasibility of developing iPhone apps on an iPod Touch.

Best Answer

As @Chaos noted, the iPhone and iPod touch differ in their hardware features. The iPod touch lacks:

  • GPS
  • 3G/EDGE cellular connection (that is, it can only connect to WiFi networks)
  • Compass
  • Camera
  • Built-in microphone (the second generation iPod touch supports external microphones; the first generation doesn't)

As for the CPU speeds, Apple doesn't publish any kind of spec for that. However, the iPhone 3GS is definitely faster than the current iPod touch, which is a bit faster than the original iPhone and the iPhone 3G. If your app is CPU-intensive, you should test it on an older iPhone.

Another important difference is the networking capabilities of the different devices. If your app never has to connect to the Internet, then an iPod touch is just fine. However, if you're using the network at all in your app, remember that WiFi connections are nice and stable and fast, but 3G and EDGE connections are slow and crappy and prone to intermittent failure. Your app needs to be able to deal with a crappy Internet connection. You don't actually need an iPhone to test this stuff, though; instead, you can write a script to artificially throttle or interrupt your development machine's network connection. Craig Hockenberry posted a good method for doing this, which you can find reproduced here.