Hi Anthony,
I completely understand where you’re coming from, but I respectfully disagree on all these points. 
First, you suggested that when a user is playing a game and presses the home button, they’ve probably “deliberately quit” the game. I disagree. Quite often, a user will press the home button while they’re playing a game because they have something else they need to do on their device (make a phone call, check or send an email, etc.). Once they’ve finished doing that, and they come back to the game, they’ll naturally expect it to be in the same state as before, i.e., if they were in the middle of a level, the game should re-open in that level just where they left off. Most games that I’ve ever tried have this behavior. If your game doesn’t, I think you’ll find your users will be disappointed very quickly, and understandably so.
Second, while I agree that you can never be sure to be completely bug-free, and that some unforeseen bug could cause your game to hang, having the game exit on suspend is, in my mind, a very sub-optimal solution because of the reason I described above. Test your app thoroughly, not just yourself on your own devices, but having friends and family and others test on their devices. With enough testing across people and devices, you should feel comfortable that there are no show-stopper bugs. If, even after that testing, some show-stopper bug did exist that caused your app to hang, the user wouldn’t have to reset their phone to fix it. On iOS, a user can also double-click the home button to bring up the list of running apps and close them individually (though I would grant that not all users know how to do this). Also, if a user doesn’t use an app for a while, eventually iOS will exit it from suspension in order to reclaim the memory for other apps the user is running. Once that happens, your game will restart from the beginning next time it’s launched.
Third, while I suppose developing an app with zero memory leaks is a bit more time consuming, I don’t think it’s unreasonably so once you’ve had some practice with it. Be disciplined about your use of global vs. local variables, destroying unneeded objects, etc., and test your memory usage whenever you make significant changes to your code (there are a number of posts around the forums with suggestions how to do this) to make sure you haven’t introduced a leak.
That’s my perspective anyway. 
- Andrew [import]uid: 109711 topic_id: 32345 reply_id: 128883[/import]