Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建;雪碧“;减少iPhone应用程序内存_Ios_Image_Memory_Reduce - Fatal编程技术网

Ios 创建;雪碧“;减少iPhone应用程序内存

Ios 创建;雪碧“;减少iPhone应用程序内存,ios,image,memory,reduce,Ios,Image,Memory,Reduce,目前,我的iPhone应用程序将所有图标和按钮加载为.png图像,这占用了大量内存。是否有其他格式或方法可以加载多个图像,从而大大减少我的应用程序使用的内存量 我应该使用什么特定的UIImage方法来加载图像 谢谢 免责声明:还不太熟悉iOS,可能不会有最好的答案。但我对spriting比较熟悉,所以这可能会有所帮助 一种可能节省一些内存的传统方法(取决于iOS设备处理图像的方式;我不确定)是将精灵连接到精灵表中 例如,它不存储16个单独的32x32 PNG,而是存储一个128x128 PNG(

目前,我的iPhone应用程序将所有图标和按钮加载为.png图像,这占用了大量内存。是否有其他格式或方法可以加载多个图像,从而大大减少我的应用程序使用的内存量

我应该使用什么特定的UIImage方法来加载图像

谢谢

免责声明:还不太熟悉iOS,可能不会有最好的答案。但我对spriting比较熟悉,所以这可能会有所帮助

一种可能节省一些内存的传统方法(取决于iOS设备处理图像的方式;我不确定)是将精灵连接到精灵表中


例如,它不存储16个单独的32x32 PNG,而是存储一个128x128 PNG(4×4个精灵),您可以通过像素偏移显示精灵。通常,偏移量表示为索引,在助手方法中乘以32以找到实际的像素偏移量。

这似乎很明显,但您是否真的释放了对应用程序中使用的图像内存的引用?例如,不要调用UIImageView imageNamed,因为此方法在系统级别缓存数据。相反,请使用UIImage imageWithContentsOfFile加载,然后在不再使用某个特定图像时将该引用放到该图像中。除非您实际上一直在使用所有按钮图像,否则这可能会解决您的问题。将精灵放入精灵工作表只是提高运行时性能,并不会降低内存使用率。事实上,精灵工作表通常会增加内存使用,因为一旦使用其中一个精灵,工作表中所有精灵的所有内存都会在ram中分配。