iOS内存优化(持续更新)

简介:

   在iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下:

UIImage如何加载图片


用UIImage加载本地图像最常用的是下面三种:

1、imageNamed

UIImage *image = [UIImage imageNamed: imageName];

这种方式初学者用的最多,因为方便,但是它会把每次加载出来的图片放入内存中缓存起来,如果图片非常多,非常容易造成程序卡,甚至崩溃。但是如果有一些图片要经常被使用,那么使用这个方法效率会很高。一般不使用。

2、imageWithContentsOfFile

NSString *fullPath = [[NSBundle mainBundle] pathForResource: imageName ofType:nil];
    UIImage *image = [UIImage imageWithContentsOfFile: fullPath];

这个方法加载图片是不会缓存的,最多的使用这个。

3、initWithContentsOfFile

UIImage *image = [[UIImage alloc] initWithContentsOfFile: imageName];

这个方法需要手动release掉,不系统缓存。release后立即被释放,一般用在封面等图比较大的地方。


参考资料:http://blog.csdn.net/sqq521/article/details/13628749

目录
相关文章
|
3月前
|
Swift iOS开发
iOS开发-属性的内存管理
【8月更文挑战第12天】在iOS开发中,属性的内存管理至关重要,直接影响应用性能与稳定性。主要策略包括:`strong`(强引用),不维持对象生命期,可用于解除循环引用;`assign`(赋值),适用于基本数据类型及非指针对象属性;`copy`,复制对象而非引用,确保对象不变性。iOS采用引用计数管理内存,ARC(自动引用计数)自动处理引用增减,简化开发。为避免循环引用,可利用弱引用或Swift中的`[weak self]`。最佳实践包括:选择恰当的内存管理策略、减少不必要的强引用、及时释放不再使用的对象、注意block内存管理,并使用Xcode工具进行内存分析。
|
JSON 监控 安全
iOS逆向专栏总目录(持续更新)
iOS逆向专栏总目录(持续更新)
209 0
iOS逆向专栏总目录(持续更新)
|
iOS开发 异构计算
如何增加 iOS APP 虚拟地址空间及内存上限?XNU 内核源码解读
1. 引言 最近一段时间在做钉钉 iOS 内存专项治理,解决内存不足时的 jetsam 事件及 malloc 的异常崩溃。在进程创建时系统会为每个 app 设定内存最大使用上限,内核会维护一个内存阈值优先级列表,当设备内存不足时低优先级的 app 会首先被内核中止进程。在阅读 XNU 内核源码过程中我们发现提供系统了两种能力可以扩展 App 的虚拟地址空间(com.apple.developer.kernel.extended-virtual-addressing)和增加内存使用上限(com.apple.developer.kernel.increased-memory-limit)。
2102 0
如何增加 iOS APP 虚拟地址空间及内存上限?XNU 内核源码解读
|
存储 算法 iOS开发
|
存储 算法 Java
iOS开发 - 穿针引线之内存管理(二)
iOS开发 - 穿针引线之内存管理
226 0
|
存储 程序员 C语言
iOS开发 - 穿针引线之内存管理(一)
iOS开发 - 穿针引线之内存管理
188 0
|
存储 监控 Unix
iOS-底层原理36:内存优化(一) 野指针探测
iOS-底层原理36:内存优化(一) 野指针探测
639 0
iOS-底层原理36:内存优化(一) 野指针探测
|
存储 安全 API
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
214 0
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
|
iOS开发
iOS-底层原理 33:内存管理(二)强引用分析
iOS-底层原理 33:内存管理(二)强引用分析
197 0
iOS-底层原理 33:内存管理(二)强引用分析
|
存储 编译器 Serverless
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
256 0
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析