【发布时间】:2015-05-14 06:41:09
【问题描述】:
我的项目具有图像共享功能。在此功能中,我的应用会询问用户您要共享哪个库。
我写了下面的代码来分配图像,从默认库/自定义库中检索。
-
设备默认库
imgVwMediaFile.image = [UIImage imageWithCGImage:[资产缩略图]; //(ALAsset *)资产
-
自定义库(图片位于 Documents/image/user)
imgVwMediaFile.image = [UIImage imageWithContentsOfFile:path]; //(NSString*)路径
应用程序在具有自定义单元格的集合视图中显示此图像。
当我选择应用程序自定义库时,会从 Documents 目录中检索图像,但 imagewithcontentofFile 占用大约 90 到 100 Mb 内存。
在其他情况下,当我选择应用程序默认库时,它不会消耗超过 8 或 10 Mb 的内存。
我为自定义库尝试了堆栈 Q/A 中的不同代码,但仍然存在内存问题。
-1-
CGImageRef iref = [[UIImage imageNamed:asset] CGImage] ;
imgVwMediaFile.image=[UIImage imageWithCGImage:iref];
iref=nil
-2-
NSData *imageData = [[NSData alloc] initWithContentsOfFile:path];
imgVwMediaFile.image=[UIImage imageWithData:imageData];
imageData=nil
-3-
imgVwMediaFile.image=[UIImage imageNamed:path];
所以请指导我,我如何从文档目录加载图像?
在不增加内存负载的情况下从文档目录加载图像的最佳方法是什么?
【问题讨论】:
-
imageWithContentsOfFile 只是从资源包中加载图像,没有缓存....最好使用 imageWithContentsOfFile。
标签: ios objective-c memory-management uiimage