博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
伤不起的imageNamed方法
阅读量:5977 次
发布时间:2019-06-20

本文共 1398 字,大约阅读时间需要 4 分钟。

前段时间是遇到莫名其妙的崩最后于找出来是什么鬼原因 

1 [UIImage imageNamed:];

存了多的大致内存用尽最后崩最后解决问题的方法如下 

首先只存减小了大小的然后需要用到大从直接取不 
 
很明个方法不够好几天以后是无声无息的崩经过多次的排除了其他代 
的内存泄露等问题再看console里面一堆系内存警告然后退出了后台程知道用挂了 
 
所以很明+imageNamed个方法直太异了即使什么清空存什么的估也不管用 
 
并不是什么难题如果你干脆放弃存的苹果的例子代中有么一个函数足可使用函数的注的很清楚 

- (UIImage *)tileForScale:(CGFloat)scale row:(
int)row col:(
int)col{
     
//
 we use "imageWithContentsOfFile:" instead of "imageNamed:" here because we don't want UIImage to cache our tiles
    NSString *tileName = [NSString stringWithFormat:
@"
%@_%d_%d_%d
", imageName, (
int)(scale * 
1000), col, row];
    NSString *path = [[NSBundle mainBundle] pathForResource:tileName ofType:
@"
png
"]; 
    UIImage *image = [UIImage imageWithContentsOfFile:path];
    
return image;
}

或者你非要比如我可以用一个NSMutableDictionary 

 1 - (UIImage*)thumbnailImage:(NSString*)fileName
 2 { 
 3    UIImage *thumbnail = [thumbnailCache objectForKey:fileName
 4    
if (nil == thumbnail)
 5    {
 6       NSString *thumbnailFile = [NSString stringWithFormat:
@"
%@/thumbnails/%@.jpg
", [[NSBundle mainBundle] resourcePath], fileName];
 7       thumbnail = [UIImage imageWithContentsOfFile:thumbnailFile];
 8       [thumbnailCache setObject:thumbnail forKey:fileName];
 9    }
10    
return thumbnail;
11 }

 

如果遇到内存低的警告只要

1 [thumbnailCache removeAllObjects];
OK
 

 

所以如何在有大量片的情况下千万不要使用

1 [UIImage imageNamed];
异的方法了
你可以
试试
上面的方法
希望
你有帮助

 

转载地址:http://cpsox.baihongyu.com/

你可能感兴趣的文章
Leetcode03
查看>>
Mysql常用命令
查看>>
Vuex的基本使用
查看>>
在DigitalOcean玩Kubernetes(K8S)
查看>>
双机概念
查看>>
#我要10000+# 计划启动啦!让文章拥有更多曝光~
查看>>
php excel
查看>>
一些设计思想的汇集(2)
查看>>
GRUB and LVM and EVMS
查看>>
List集合的迭代器方法
查看>>
ECShop替换FCKeditor编辑器为KindEditor
查看>>
oracle 11g EM停止后无法启动
查看>>
面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...
查看>>
OSI七层模型和TCP/IP四层模型
查看>>
ceph学习笔记之七 数据平衡
查看>>
windows下的php的memcache扩展的安装及memcache最新下载地址
查看>>
YOLOv3: 训练自己的数据(绝对经典版本1)
查看>>
POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》
查看>>
asp.net C# 将数据导出到Execl汇总
查看>>
Could not find artifact com.sun:tools:jar:1.5.0 解决办法
查看>>