您的位置:首页 > 移动开发 > IOS开发

让你的程序“飞”起来——性能优化

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)的复用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息