iOS开发之photokit图片选择器二次封装

基于photokit封装一个和当前版本微信选择图片的图片选择器功能组件,基础部分知识已归纳在
iOS开发之AssetsLibrary与photokit总结
这里,本篇主要讲述新版优化所遇到的问题

内存问题

1、之前的封装版本会有内存峰值较高的情况,对于低版本机型不友好,如果图片存储过多会造成内存峰值较高而闪退
原因:

  • 缩略图部分使用数组来存储已经获取到的图片,只要图片选择器不释放,就会造成数组不释放,图片加载越多,数组存量越大,导致内存会一直增长,这里已经参考过谭真的TZImagePick而Controller代码并咨询过本人,调研后发现他的封装也会存在该问题
  • 大图浏览模块也面临同样的问题,但也没有人会去在大图浏览一直滑动上万张图片进行选择,虽很少有此场景但不代表没有,所以问题和缩略图界面相同

解决:
1、尝试使用photokit提供的startCachingImages方法来批量进行图片缓存,可以在需要的时候直接取出,但也是会涨内存的操作
2、提供方法进行异步线程缓存图片,但缓存时机无法掌握,如在图片选择器内进行截图保存,下一次打开不一定有最新图片,需要重新进行缓存图片来实现亦或是打开图片选择器时检查最新图片是否是和之前一样,不一样则重新取出,但逻辑较为麻烦
3、这里需要感谢某网友提供的方法以及组件库,使用了EGOCache三方,可以将图片缓存进磁盘,取出时通过iden来进行取图,没有则调用photokit来取图,可以快速拿到缩略图,且第一次加载也不会影响
4、尝试10000+张相册图片的压测,微信在卸载重装之后,打开相册快速翻阅,翻到底后会存在cell复用闪屏的情况,如果慢翻阅则不会,同理本次封装也会出现,但只要全部都加载过一次,也不会存在该问题

打开相册较慢的问题

原逻辑在控制器viewDidLoad中,加载相册列表、加载第一个相册(所有照片)的图片,图片较多的情况下卡主线程,打开相册用时6到8s不等,图片越多时间越长,这次也进行了优化

话不多说,直接上代码,如果要直接使用微信图片选择的朋友,可以直接cocoaPod安装

传送门,记得给star好评哈

你可能感兴趣的:(iOS开发之photokit图片选择器二次封装)