iOS图片缓存

简介: iOS的内存管理始终是开发者面临的大问题,内存占用过大时,很容易会被系统kill掉,开发者需要尽可能的优化内存占用问题。 现在的App界面做的越来越精致,里面集成了大量的图片,笔者首先想到的就是如何减少这些图片占用的内存。

iOS的内存管理始终是开发者面临的大问题,内存占用过大时,很容易会被系统kill掉,开发者需要尽可能的优化内存占用问题。

现在的App界面做的越来越精致,里面集成了大量的图片,笔者首先想到的就是如何减少这些图片占用的内存。

通常我们加载图片使用以下方式: 1.imageNamed: 图片加载完成后,系统会把它缓存在内存中,当第二次加载时,直接就从内存中读取了,好处是加载速度过,缺点就是会一直占用系统内存,当我们的图片需要反复加载时,这种方式是一种不错的选择; 2.imageWithContentOfFile: 图片只加载一次,不会缓存在内存中,用完后就把占用的内存释放掉,每次都重新加载,这种加载方式适合只加载少次的情况。

Asset Catalog 是苹果推出的新的图片资源管理工具,方便、直观 打包时,苹果会将图片资源统一打包成.car的文件,我们获取不到里面的图片路径,也就无法使用imageWithContentOfFile的方式加载了,只能使用imageNamed来加载,也就意味着加载过的图片全都缓存在了内存里,这样,整个App占用的内存就会比较大,被系统kill掉得风险就大了。

解决办法: 由于之前的工程一直使用Asset Catalog方式管理图片资源,现在需要想办法减少整个App的内存占用。首先想到的方法就是把图片从Asset Catalog中移出来。 把Asset Catalog目录下地所有内容都Copy出来,然后将Asset Cataglog整个目录删掉。

如果是原来使用Asset Catalog正确的话,@1x, @2x, @3x素材添加正确的话,这样做直接就OK了,是没有问题的。 如果有不当使用的话就麻烦了, 诸如命名不当的小问题,直接这样读取就会出现问题,需要我们手动解析并加载。

进入Asset Catalog目录: echo “{"assets\”: [“ > a.json find Images.xcassets/ -name *.json | while read jsonfile; do tmppath=${jsonfile%.imageset/ } assetname=${tmppath## /} echo ”{\“assetname\”:\“${assetname}\”,\“content\”:“ >> a.json cat $jsonfile >> a.json; echo ‘},’ >>a.json done echo ‘]}’ >>a.json

去掉最后一个逗号,a.json就成了一个标准的JSON文件,我们需要做的就是解析此文件,根据实际情况加载不同的文件。

使用Category的方式扩展UIImage类,重写imageNamed方法,这样原来所有带缓存的加载方式就变成了不带缓存的方式,当然,这个需要灵活处理,哪些图片需要加载之后缓存在内存,哪些不需要缓存在内存,都要分开处理。

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
6月前
|
JSON JavaScript 安全
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
59 1
|
iOS开发
iOS TextView插入表情或者图片后字体变大或变小
iOS TextView插入表情或者图片后字体变大或变小
111 1
|
6月前
|
存储 缓存 安全
基于iOS平台的高效图片缓存策略实现
【4月更文挑战第22天】 在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。尤其对于iOS平台,由于设备存储空间的限制以及用户对流畅性的高要求,设计一种合理的图片缓存策略显得尤为关键。本文将探讨在iOS环境下,如何通过使用先进的图片缓存技术,包括内存缓存、磁盘缓存以及网络请求的优化,来提高应用的性能和响应速度。我们将重点分析多级缓存机制的设计与实现,并对可能出现的问题及其解决方案进行讨论。
|
6月前
|
存储 缓存 算法
实现iOS平台的高效图片缓存策略
【4月更文挑战第22天】在移动应用开发中,图片资源的处理是影响用户体验的重要因素之一。特别是对于图像资源密集型的iOS应用,如何有效地缓存图片以减少内存占用和提升加载速度,是开发者们面临的关键挑战。本文将探讨一种针对iOS平台的图片缓存策略,该策略通过结合内存缓存与磁盘缓存的机制,并采用先进的图片解码和异步加载技术,旨在实现快速加载的同时,保持应用的内存效率。
|
6月前
|
存储 缓存 编解码
实现iOS平台的高效图片缓存策略
【4月更文挑战第23天】在移动应用开发领域,尤其是图像处理密集型的iOS应用中,高效的图片缓存策略对于提升用户体验和节省系统资源至关重要。本文将探讨一种针对iOS平台设计的图片缓存方案,该方案通过结合内存缓存与磁盘缓存的多层次结构,旨在优化图片加载性能并降低内存占用。我们将深入分析其设计理念、核心组件以及在实际场景中的应用效果,同时对比其他常见缓存技术的优势与局限。
|
6月前
|
存储 Web App开发 Android开发
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
621 1
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
|
6月前
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
按钮的image图片是非圆角,直接对UIButton设置圆角,iOS13系统没有圆角效果的问题及解决方案
48 0
|
6月前
|
缓存 定位技术 iOS开发
清除ios的缓存
清除ios的缓存
38 0
|
6月前
|
存储 缓存 iOS开发
实现iOS平台的高效图片缓存策略
【4月更文挑战第4天】在移动应用开发中,图片资源的加载与缓存是影响用户体验的关键因素之一。尤其对于iOS平台,由于设备存储和内存资源的限制,设计一个高效的图片缓存机制尤为重要。本文将深入探讨在iOS环境下,如何通过技术手段实现图片的高效加载与缓存,包括内存缓存、磁盘缓存以及网络层面的优化,旨在为用户提供流畅且稳定的图片浏览体验。
|
6月前
|
存储 缓存 监控
实现iOS平台的高效图片缓存策略
【4月更文挑战第18天】在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。特别是对于iOS平台,合理设计图片缓存策略不仅能够提高应用的响应速度,还能降低内存消耗和网络流量。本文将探讨一种针对iOS环境的图片缓存方案,该方案通过多级缓存机制、内存管理和磁盘存储策略相结合,旨在提升图片加载效率并优化性能。