常用的性能优化手段(内存优化方法)

  常用的性能优化手段

1.使用 ARC 进行内存管理,ARC 是 iOS 提供的采用自动引用计数方式进行管理内存的一种手法,它避免了最常见的忘记释放对象内存而引起的内存泄漏问题。它的工作原理是编译器会自动的为你管理 retain 和 release 过程。
2.表格复用:reuseIdentifier,在使用单元格时应采用懒加载的模式去创建表格的单元格,首相应当在缓存中去寻找单元格是否创建,找到就直接使用,没有进而进行创建单元格进行使用,需要注意一点的是在设置单元的标志 ID 时,应采用 static 进行修饰,已达到程序运行时内存中仅存在一份单元格标识符 ID
3.尽量的把 views 设置为透明:透明的 views 是系统最优化的渲染方式,通常是吧 opaque 属性设置为YES
4.避免使用庞大的XIB,如果你不得不使用 XIB 时,请尝试为每一个单独的 controller 配置一个单独的 XIB,尽量的把一个View  controller中的 view 结构层次分散到不同的 XIB 中
5.避免阻塞主线程。记住永远不要让主线程担任过多的任务,主线程所做的工作大致为渲染,管理交互反应,回应交互等
6.不要在程序运行的时候去调整图片的大小,打个优化的比方,假如你从网络进行获取的图片需要进行大小设置,你可以选择在后台进程中进行图片的缩放,然后在使用缩放后的图片,也就是避免直接在 UIImageView 中更改图片的大小。
7.正确的业务逻辑选择,例如数组、字典、集合、在有序的数组中使用下边去遍历会高于使用数值去遍历速度,插曲删除的速度相对很慢。字典在使用时存储键值对,使用键值进行查找会相对使用 value 快速、集合中是无序的,使用值查找会是一个快速的选择。
8.当远程下载大量数据时应当考虑到gzip压缩,考虑到移动端的网络状态并不是多好,我们进行资源下载时使用gzip和解压缩的形式,即快速,又节省了用户的流量。
9.使用重用和延时加载视图,更多的视图意味着更多的渲染,意味着更多的CPU 消耗,常使用的方法是重用 view 和延迟加载 view(懒加载)仅当需要时进行创建、不需要时进行销毁释放内存。
10.使用 cache 缓存技术:
缓存的技术是必不可少的,经常用于存储我们经常读取的数据。cache 的使用在另一半文章中去介绍
11.进行内存警告处理, 如果你的app收到了内存警告,它就需要尽可能释放更多的内存。最佳方式是移除对缓存,图片object和其他一些可以重创建的objects的strong references,1、使用APP delegate 中的applicationDidReceiveMemoryWarning方法 2、在自定义的对象 UI 中去覆盖didReceiveMemoryWarning方法 3、使用内存警告的本地通知,当内存发生警告就移除 UI 释放内存
12.重用重大的内存开销对象以及结构、例如时间格式器、日历等
13.使用 sprite sheets 进行加快渲染速度。
14.避免反复的处理数据
15.减少使用 web 加载
16.优化 tableview保证良好的滚动性能、例如单元格复用、尽量使用透明的 view,避免渐变、图片缩放操作、减少subviews使用、缓存行高
17.使用自动释放池

NSAutoreleasePool负责释放block中的autoreleased objects。一般情况下它会自动被UIKit调用。但是有些状况下你也需要手动去创建它。

假如你创建很多临时对象,你会发现内存一直在减少直到这些对象被release的时候。这是因为只有当UIKit用光了autorelease pool的时候memory才会被释放。好消息是你可以在你自己的@autoreleasepool里创建临时的对象来避免这个行为:

NSArray *urls = <# An array of file URLs #>;

for(NSURL *url in urls) {

@autoreleasepool {

NSError *error;

NSString *fileContents = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

 

/* Process the string, creating and autoreleasing more objects. */

 

}

 

}

这段代码在每次遍历后释放所有autorelease对象


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值