iOS应用性能优化备忘录
2015-11-06 19:37
375 查看
UITableView
在cellForRowAtIndexPath中使用
dequeueReusableCellWithIdentifier来重用 Cell,而不是使用
UITableViewCell来新建 Cell
当你的 Cell 里需加载网络图片的话,采用异步方式(如直接使用 SDWebImage ),而不是同步方式,且先放置默认图片,取得网络数据后更新,是比较好的方式
如果你的单个 Cell 所需网络数据的请求时间过长,可以选择在 tableView 停止滑动之后再加载网络数据,可以利用
UIScrollViewDelegate中的
scrollViewDidEndDragging判定
decelerate为
fasle,以及
scrollViewDidEndDecelerating方法,来获知 tableView 已停止滑动,你还可以在
scrollViewWillBeginDragging函数中,添加代码来停止正在进行的数据加载
尽量使用
rowHeight,
sectionFooterHeight,
sectionHeaderHeight来设置固定的高,而不请求 delegate 方法,即便需要请求,也不要在代理方法内计算行高,提前缓存好
减少
Subviews的数量
减少放置在
CellForRowAtIndexPath方法内的操作
UIView
尽量将不透明 View 的Opaque属性设置为
true,尤其是它们出现在了复杂动画或是 ScrollView 中的时候,我们通常可以对 tableView 中的 Cell 做如此设置
CALayer
采用cornerRadius设置圆角时,如果数量过多,会大幅降低你应用的帧数,所需圆角比较多的情况下,预先生成圆角图片并缓存,使用时直接取出,是比较好的手段,但如果你一定要作死,作如下设置能在一定程度上起到挽救作用
self.layer.shouldRasterize = true self.layer.rasterizationScale = UIScreen.mainScreen.scale
Queue
所有 UIKit 相关操作都必须放在主线程中执行不要将耗时的操作(如获取网络数据)放在主线程,这会导致你的应用失去响应
CollectionType
Arrays 依据 index 进行查找时性能比较优秀,但如果需要依据 value 进行查找,以及需进行大量插入删除操作时,Sets 的性能要更好Network
当传输的网络数据过大时,采用 gzip 压缩方式可以在一定程度降低传输数据的大小,如果你不太了解 gzip,你可以读下 这篇文章尽量在服务器端与客户端使用相同的数据结构,在内存中操作数据使它们满足你的数据结构开销很大
JSON 相比较于 XML,优点在于解析快,更小更易于传输,但当你传输较大数据的时候,使用 SAX 解析 XML 时,可以做到边下载边解析,可极大的降低内存消耗
BackgroundImage
如果你要使用小图平铺来创建背景图的话,采用UIColor的
colorWithPatternImage的渲染速度会更快
self.view.backgroundColor = UIColor(patternImage: (UIImage(named: "background")!))
Data
小规模的数据使用NSUserDefults存储是比较好的方式
在性能上 SQLite 和 CoreData 相差不大,一般情况下建议使用 CoreData,但如果有特殊需求的话,SQLite 也是不错的选择
Launch
在didFinishLaunching里开始尽可能多的异步任务来使你的应用尽早得到展示数据
如果你需要加载一个大图片而且只供一次性使用,采用
imageWithContentsOfFile来加载它比较好的选择,但如果图片需要多次重用,
imageNamed会将图片缓存,多次重用速度会快很多
Segue
尽量不要在viewWillAppear中放置太多操作
End
虽然 80% 的性能优化都是不必要的,但是当你发现自己的应用存在明显性能问题的时候,逐条核对一下吧 :)相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 深入理解PHP7内核之FAST_ZPP
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Flex 性能优化常用手法总结
- oracle 性能优化建议小结
- Lua性能优化技巧(一):前言
- Lua性能优化技巧(五):削减、重用和回收
- Lua性能优化技巧(三):关于表
- Lua性能优化技巧(四):关于字符串
- MySQL性能优化 出题业务SQL优化
- PowerShell脚本性能优化技巧总结
- SQL SERVER性能优化综述(很好的总结,不要错过哦)第1/3页
- MySQL Index Condition Pushdown(ICP)性能优化方法实例
- Ajax无刷新分页的性能优化方法
- dedecms负载性能优化实例,三招让你的dedecms快10倍以上第1/2页