iOS性能优化
来源:互联网 发布:mac实用软件 编辑:程序博客网 时间:2024/06/06 01:15
1、用ARC管理内存
2、使用reuseIdentifier
3、避免庞大的XIB
加载一个XIB时候,所有内容都被放在了内存里,包括任何图片。如果有一个不会即刻用到的view,这样就是在浪费宝贵的内存资源。storyboard仅在需要时实例化一个viewController,但在app需要适应iOS5之前的设备或者自定义可重用的view时不可避免的要用到xib,这时就要使它men斤两简单,每个viewcontroller配置一个单独的XIB,尽可能的把一个viewController的view层次结构分散到单独的XIB中去。
4、不用block主线程
5、在imageViews中调整图片大小
在运行中缩放图片时很耗费资源的,特别是UIImageView 嵌套在UIScrollView 中的情况下。如果是bundle中的图片,你应该保证图片大小和 UIImageView大小相同;如果是远端服务器加载,最好在下载完成后用background thread缩放一次。
6、重用和延迟加载Views
更多的view意味着更多的渲染,也就是更多的CPU和内存消耗,这时我们就需要模仿UITableView UICollection的操作:不要一次创建所有subview,需要时才创建,当它们完成了使命,就把它们放到一个可重用的队列中。
例如,点击按钮显示一个view的场景:可以创建并隐藏,当需要加载时显示它,这样需要创建一个view并保持到不再使用,这样会更加消耗内存,不过用户体验较好。
另一种是当需要时才创建并显示,这样消耗内存少,但是点击时比上一种稍显卡顿。
7、使用Cache
8、权衡渲染方法
9、处理内存警告
10、重用大开销的对象
一些objects初始化很慢,比如NSDateFormatter 和 NSCalendar,但又要经常使用它们,这就需要重用他们,可以通过添加属性到class里或者创建静态变量来实现。
11、避免反复处理数据
12、选择正确的数据格式
13、正确的设定Background Images
14、减少使用web特性
UIWebView用来展示网页内容或者创建UIKit很难做到的动画效果很简单。但UIWebView驱动较慢,要提高性能就调整下HTML,首先尽可能移除不必要的javascript,
避免使用过大的框架,能用原生的js 就更好了。尽可能异步加载例如用户行为统计Script这种不影响页面表达的javascript。
15、优化tableView
16、选择正确的数据存储选项
17、加速启动时间
18、使用Autorelease Pool
19、选择是否缓存图片
20、尽量避免日期格式转换
21、使用正确的collection
选择对业务场景最合适的类或对象是能写出能效高代码的基础。
常见collection的总结:
Arrays:有序的一组值。使用index查找很快;使用值查找很慢,查找删除很慢。
Dictionaries:存储键值对。用键查找比较快。
Sets:无序的一组值。用值查找很快,插入删除很快。
22、打开gzip
大量app依赖于远端资源,网络的状况不能保证,所以需压缩。减小文档的一个方式就是在服务器和app中打开gzip,对于文字这种具有高压缩率的数据有更显著的作用。
iOS在NSURLConnection中支持了gzip压缩,AFNetworking这些基于它的框架也支持。
- iOS内存优化,性能优化
- iphone ios 性能优化
- iOS性能优化系列
- ios 性能优化
- IOS性能优化
- iOS性能优化策略
- iOS性能优化系列
- iOS App性能优化
- iOS App性能优化
- iOS App性能优化
- iOS程序性能优化
- iOS性能优化策略
- ios 性能优化
- iOS性能优化小结
- iOS App性能优化
- iOS程序性能优化
- iOS App性能优化
- iOS性能优化系列
- Tomcat配置JNDI数据源
- 关于c++运算符重载
- Haar特征初级
- php读取zip注释
- Throwable:Invalid stub element type in index
- iOS性能优化
- hdu1004 Let the Balloon Rise && hdu1263 水果(map)
- 基于SuperSocket 1.6版本的自定义帧过滤的源码分析
- 使用ivy管理项目需要的jar包
- JS属性访问表达式之对象访问属性点方式和中括号方式的区别
- 【PHP】microtime 与 time 函数介绍
- iOS开发网络篇—监测网络状态
- Java CopyOnWriteArrayList 源码分析
- Java千百问_02基本使用(001)_如何用记事本编写Java程序