Unity does not like non-uniform scale on unskinned meshes. Uniform scale is when the X, Y, and Z scale are all identical, if any of them are off, it is a non-uniform scale. Yes, this even includes “2D” elements, such as buttons and hud graphics, you still want to scale the depth on these even if there is not any visible depth. Skinned meshes, such as characters, handle non-uniform scale fine. Before Unity 4, even constant non-uniform scale was a performance concern. With Unity 4, Unity started caching these non-uniform scaled meshes in the background, so as long as the scale is not animated, you are only paying the high cost of non-uniform scale once, and after that Unity will reference the cached data.
Unity claims to support non-power of two textures for iOS, but this support comes at an extreme memory cost. Non-power of two textures are textures whose width or height do not fall on a power of two, values that are not: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. If either the width or the height of a texture is not a power of two, Unity will more than double the memory usage of the texture. For these textures, Unity will keep a copy of the original non-power of two texture in memory, and will also create a texture with the extents padded out to a power of two. This can lead to a lot of missing memory for UI and hud elements that are non-power of two.
There are many special rules for folder names. The most common folder name rule is for “Resources.” Anything in a folder, or subfolder of a Resources folder is considered by Unity necessary for the build, and will be packaged with the app. The immediate thing you will notice here, is if you have unused assets in your resources folder, they will be packaged with your app. The concern here falls on to total build side, if you are targetting under 50 MB of total size to get under the limit for over the air download, you will want to removed unused assets from any Resources folder.
Aside from the obvious problem there, the next thing to be aware of is a bug with Unity’s Resources system. Any files with dependencies in them, in the Resources folder, will cause a permanent hit to runtime memory. Unity is aware of this bug, and it will hopefully be fixed in a future version of Unity, but it is something to be aware of now, as it can stealthily eat large chunks of runtime memory, making you pull your hair out trying to figure out where it all went. The case this most often comes up with, is animations. Luckily there is a workaround here, and that is to put your animations into a folder not in a Resources folder. While everything in a Resources folder is automatically included in your build, Unity will still add files outside of the Resources folder to the build, if there is a dependency on them. In the case of animations, they will be added to the build as long as the base FBX model associated with them is in the build.