The only time memory warnings are bad is if there is no memory to free up. Then they become memory failures and the application terminates.
Once you load compressed images like png and jpg into memory they are decompressed and often take up 10x the size. When you use [UIImage imageNamed:]
it caches the images in memory. This is implicit with any images loaded by a xib. When it receives a memory warning, it releases images in the cache.
Any views you have which are not images may have the rendered contents cached in memory. When a memory warning is received, the caches are cleared unless they are currently displayed. Entire view hierarchies may also be released by view controllers that are not currently displayed.
Memory warnings are a normal part of the application runtime. They do not indicate memory leaks. They simply tell you and the system that idle memory should be released.
While it might be an admirable goal to run with no memory warnings, you generally need to allocate memory and it is more efficient to keep it around unless it is needed for other things. When an image is purged from the memory cache, it must be read from disk next time.
If there is an image that you know will only be needed once or very rarely, you can load it by a call besides [UIImage imageNamed:]
to avoid caching. For example a secondary splash screen that is only loaded as the application launches.