We recently released a game on the app store and we did a lot of testing in house… we have a 2nd gen ipod, 3rd gen ipod and 4th gen ipod, iphone 3gs, 3g, ipad and iphone 4… the game works fine on our internal devices… with random IOS version but mostly newer.
We’ve been getting some bad reviews on the appstore because of crashes. We dont have much info as few people mentioned ipods. We also received couple emails that their game crashed and for instance one we got was in iPod 4th gen running 4.2.1 ( exactly same as one of our testing devices), runs smoothly and no issues on our end.
Anyone has any suggestions? We’re ripping our hair because its so hard to debug this…
There aren’t a lot of ways you can crash a device. Most likely it’s either crashing due to high memory usage, or you have a sneaky script error that doesn’t rear its ugly head very often.
On a retina display device, how much RAM does your app use at its peak? Just because your relatively clean test device doesn’t crash does not mean someone’s abused and misused iTouch out in the wild won’t. My first app used to run a good 10mbs over what you’d consider “safe” for an app on a 3G, but it never crashed on my device… but plenty of users managed to crash it after release. A good test is to see if when run through XCode, if the console gives you memory “warnings”. If you frequently see any memory warnings at all (even level 1), odds are good it will implode on someone’s device at some point. The latest generation of hardware is also surprisingly stingy on its RAM, even though the devices have at least 256mb, the OS yells at apps that creep above 60-70 mb from my experience.
The other most likely possibility is a script error, such as an out of array index, or a null reference. I’d comb over your code for any possible way you might be accessing an object that gets destroyed, or something along those lines. I manage to find creative ways to do this all the time >.>
Ensure that you test your apps on “actively used” devices where you see the impact of Apples “sandbox” (codename: the sponge) memory management and the corresponding instability.
The simulator can come in handy here as it can simulate the impact of memory warning so you get to see your apps behavior. Simulator is also good to measure the ram requirements of your app