I want to share a way that will save a few megabytes of "extra" weight in your iOS application. Why this may be needed? Firstly, if your application is a little more than 20 MB, then it will not be able to download via 3G, but only using Wi-Fi or iTunes sync (limited by Apple). Well, secondly, if you like to optimize everything or just want to slightly reduce the load time of your apa.
I have checked and used all the items listed below in my app, saving a total of about 4 MB. It seems not very much, but if, for example, multiplied by 5000 thousand downloads per day, then we will get about 20 GB of saved traffic. So let's get started.
1 Arrangement of elements and cutting design
If your design is completely ready and chopped and you don’t want to change anything, just skip this step.
Consider an abstract example - the designer drew such a prototype:

After cutting the following pictures turned out:
Background:

fixed static element 1:

')
fixed static element 2:

and item 3 - button:

Usually, programmers do not bother much and do the same - make up the background, then impose element 1 and 2 on top of the background, and then the button. However, if we “sew” elements 1 and 2 right into the background, then our new “complex” background:

+ button, will take up less space than the old background + 2 elements + button.
1.1 Use of resources from iPhone 4 for iPad (for universal ap)
The resolution of the iPhone 4 (960x640) is not much different from the iPad (1024x768). If this is taken into account at the design and UI design stages, then many design elements can be simply copied from the design under the iPhone. For example, various buttons and other small items are usually the same for iPhone 4 and iPad, so you can not make new pictures, but load them directly with the @ 2x prefix.
Of course, this method is not suitable for all applications, but you should not forget about it.
2. Use JPEG format frequently.
Try to save all the images that do not require an alpha channel in JPEG - this will significantly reduce their size. However, they will be unpacked on the fly, which may have a slight effect on performance.
3. Run all images via Image Catalyst
About him already wrote on Habré (
Image Catalyst 2.1 ) and even using everything is simple, so there is nothing special to tell here, I’ll just say that the result is minus 5-10% of the original size.
4. Compile Settings
I use Xcode 3, so I’ll give all the settings for it. The first thing to do is set the LLVM 1.6 compiler. (In Xcode 4, the default compiler is LLVM 3.0, so there is no need to do this):

Then, remove the Compress PNG Files option (as we have already already reaped everything after Image Catalyst):

After these settings, the final build loses several megabytes.
4.1 Compiling only under ARMv7
If you do not support old devices (
iPhone 3G and iPod 1st and 2nd generation ) + minimum iOS 4.2, then you can only compile for ARMv7 architecture, it will save a few more megabytes.

Thanks
mark2b for this way.
5. Converting default.png to JPEG format (not verified to the end)
I have not tested this method on all devices yet, so there may be compatibility issues. The way is to save your upload image (default.png) to JPEG format and then rename it to PNG. Savings in size can reach up to 2-3 times, compared with the original. All devices on which I managed to check this trick, displayed the picture correctly and without problems (most likely, there is an automatic unpacking of the picture, before loading into memory).
If you have any ways to reduce the size of the apa or suggestions for improving / supplementing the above, then welcome to the comments.
upd. Slowly replenished list. Thank you all for your ideas, we continue to discuss, experiment ...