While you do have the lovely loading screen to give you a bit of time to cleanup, you should try to minimize the load time as much as possible.
The iOS (that includes older versions of the iPhone OS) have a watchdog timer. This timer will terminate your application of certain checkpoints aren't reached. If your application fails to respond from the applicationDidFinishLaunching within 10 seconds, failed to quit within 6 seconds of the user asking it to, or failed to resume after 10 seconds from being backgrounded the iOS will terminate your application.
In the WWDC2010 session videos, available on iTunes U, were a number of great sessions regarding optimizing for performance.
Two of the things they did were to:
- Cut time from the startup time
and
- Reuse TableView cells that are no longer active
You should try to do something similar if you can. For example, at startup ONLY load the things that you know will be needed. The menu sprites, hero sprites, sound effects, etc. But try to keep it low. If you're developing for the iOS 4 then checkout some of the Grand Central Dispatch abilities.
Then as Questor mentioned reuse sprites. If a sprite object has been "killed" or if a bullet is no longer valid, instead of destroying it from the world and deleting the object put it into a "queue" where it will live. Later on, when you want to create a new bullet check to see if any bullets exist in the queue. If there is return one of them. Otherwise, allocate memory for a new one.
This will reduce memory spikes which can sometimes create false positives that might make the iOS trigger a memory warning, as well as increase performance as creating new objects can be expensive.