博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 图片加载
阅读量:6593 次
发布时间:2019-06-24

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

你还在使用myImage = [UIImage imageNamed:@"icon.png"];吗???!!!   

如题,是不是大家为了方便都这样加载图片啊 

myImage = [UIImage imageNamed:@"icon.png"]; 
那么小心了 
这种方法在一些图片很少,或者图片很小的程序里是ok的。 
但是,在大量加载图片的程序里,请千万不要这样做。 
为什么呢 ??????? 

这种方法在application bundle的顶层文件夹寻找由供应的名字的图象 。 如果找到图片,装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。 

试想你图片多了,是什么后果`````` 

图片cache极有可能不会响应 memory warnings and release its objects 

所以,用图片的时候一定要小心的alloc和release 

推荐使用 
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]; 
myImage = [UIImage imageWithContentsOfFile:path]; 

不过这种方法要注意了,如果有高清图,也就是@2x的,就不能自动获取到了,自己把握吧,做ui可以用imageNamed,要处理的大图就别这样加载了 

// 会缓存图片 
UIImageView *wallpaper = [[UIImageView alloc] initWithImage: 
wallpaper = [UIImage imageNamed:@"icon.png"]]; 

// 不会缓存图片 

UIImageView *wallpaper = [[UIImageView alloc] initWithImage: 
wallpaper = [UIImage imageWithContentsOfFile:@"icon.png"]];

转载于:https://www.cnblogs.com/SnowStark/p/5603123.html

你可能感兴趣的文章
Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力
查看>>
【开发问题记录①】关于滑动CollectionView时ContentSize变化的问题
查看>>
java中GC的基本概念
查看>>
building xxx gradle project info的解决办法
查看>>
在 CentOS 7 上搭建 Jenkins + Maven + Git 持续集成环境
查看>>
数据结构与算法 | Leetcode 19. Remove Nth Node From End of List
查看>>
[LeetCode] 862. Shortest Subarray with Sum at Least K
查看>>
【分享】终端命令工具 自动生成vue组件文件以及修改router.js
查看>>
[LeetCode] Student Attendance Record I
查看>>
PHP回顾之多进程编程
查看>>
spring boot + redis
查看>>
Ajax技术细节
查看>>
nuxt.js部署vue应用到服务端过程
查看>>
删除数组中的指定元素 | JavaScript
查看>>
CSS3+JS实现静态圆形进度条【清晰、易懂】
查看>>
关于树形插件展示中数据结构转换的算法
查看>>
图片加载框架之Fresco
查看>>
高性能web建站规则(将js放在页面底部)
查看>>
Java EnumMap工作原理及实现
查看>>
阐述Spring框架中Bean的生命周期?
查看>>