让你的程序“飞”起来——性能优化
2016-03-04 14:21
351 查看
一、内存优化
1、使用Analyze和Instruments工具解决内存泄露问题
在Xcode中,共提供了两种工具帮助查找泄露点:Analyze和Instruments(Leaks、Allocations)。
Analyze是静态分析工具。可以通过Product —> Analyze菜单项启动。
Instruments是动态分析工具。它与Xcode集成在一起,可以在Xcode中通过Product —> Profile菜单项启动。
> 采用alloc、new、copy和mutableCopy所创建的对象,所有权属于调用者,它的生命周期由调用者管理,调用者负责通过release或autorelease方法释放对象
2、查找和解决僵尸对象
> 应用的某个方法试图调用僵尸对象,则会奔溃,并抛出EXEC_BAD_ACCESS
3、autorelease的使用问题
autorelease消息会使对象放入内存释放池中延迟释放,对象的引用计数并不变化,而是向内存释放池中添加一条记录,直到池被销毁前通知池中的所有对象全部发送release消息才真正将引用计数减少。
4、响应内存警告
应用程序委托对象(applicationDidReceiveMemoryWarning:)
视图控制器(didReceiveMemoryWarning)
其他类( [[NSNotification defaultCenter] addObserve:self selector:@selector(handleMemoryWarning:) name:UIApplicationDidReceiverMemornyWarningNotification object:nil] )
二、优化资源文件
1、图片文件优化
设定编译参数:Compress PNG Files 为YES
> 创建UIImage对象时,可以使用静态工厂方法 +imageNamed: 和实例构造器 - initWithContentOfFile:
> +imageNamed: 方法会在内存中建立缓存,这些缓存直到应用停止才清除,如果是贯穿整个应用的图片(如图片、logo等),推荐使用+imageNamed: 创建。如果仅使用一次的图片,推荐使用实例构造器 -initWithContentOfFile: 创建。
2、音频文件优化
三、延迟加载
1、资源文件的延迟加载
UIPageControl实现的UIScrollview滚动,viewDidLoad中只加载用户当前看到的第一页,当用户滚动是,再调用loadImage加载第二页的图片,以此类推
2、storyboard文件的延迟加载
3、xib文件的延迟加载
四、数据持久化的优化(使用文件、数据库SQLite、Core Data)
五、可重用对象的使用
1、tableViewCell的复用、组头组尾的复用
2、collectionViewCell的复用、补充视图的复用
3、地图视图(大头针view)的复用
1、使用Analyze和Instruments工具解决内存泄露问题
在Xcode中,共提供了两种工具帮助查找泄露点:Analyze和Instruments(Leaks、Allocations)。
Analyze是静态分析工具。可以通过Product —> Analyze菜单项启动。
Instruments是动态分析工具。它与Xcode集成在一起,可以在Xcode中通过Product —> Profile菜单项启动。
> 采用alloc、new、copy和mutableCopy所创建的对象,所有权属于调用者,它的生命周期由调用者管理,调用者负责通过release或autorelease方法释放对象
2、查找和解决僵尸对象
> 应用的某个方法试图调用僵尸对象,则会奔溃,并抛出EXEC_BAD_ACCESS
3、autorelease的使用问题
autorelease消息会使对象放入内存释放池中延迟释放,对象的引用计数并不变化,而是向内存释放池中添加一条记录,直到池被销毁前通知池中的所有对象全部发送release消息才真正将引用计数减少。
4、响应内存警告
应用程序委托对象(applicationDidReceiveMemoryWarning:)
视图控制器(didReceiveMemoryWarning)
其他类( [[NSNotification defaultCenter] addObserve:self selector:@selector(handleMemoryWarning:) name:UIApplicationDidReceiverMemornyWarningNotification object:nil] )
二、优化资源文件
1、图片文件优化
设定编译参数:Compress PNG Files 为YES
> 创建UIImage对象时,可以使用静态工厂方法 +imageNamed: 和实例构造器 - initWithContentOfFile:
> +imageNamed: 方法会在内存中建立缓存,这些缓存直到应用停止才清除,如果是贯穿整个应用的图片(如图片、logo等),推荐使用+imageNamed: 创建。如果仅使用一次的图片,推荐使用实例构造器 -initWithContentOfFile: 创建。
2、音频文件优化
三、延迟加载
1、资源文件的延迟加载
UIPageControl实现的UIScrollview滚动,viewDidLoad中只加载用户当前看到的第一页,当用户滚动是,再调用loadImage加载第二页的图片,以此类推
2、storyboard文件的延迟加载
3、xib文件的延迟加载
四、数据持久化的优化(使用文件、数据库SQLite、Core Data)
五、可重用对象的使用
1、tableViewCell的复用、组头组尾的复用
2、collectionViewCell的复用、补充视图的复用
3、地图视图(大头针view)的复用
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 深入理解PHP7内核之FAST_ZPP
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- MySQL 优化
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Google排名优化的几个影响因素
- DB2优化(简易版)
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
- Flex 性能优化常用手法总结
- C#中尾递归的使用、优化及编译器优化
- 对优化Ruby on Rails性能的一些办法的探究
- 优化Ruby脚本效率实例分享
- oracle 性能优化建议小结
- Lua性能优化技巧(一):前言
- Lua性能优化技巧(五):削减、重用和回收
- Lua性能优化技巧(三):关于表