在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。

  然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有许多事项需要记住,并且关于性能影响很容易忘记。

  这是为什么我要写这篇文章!本文收集了25个关于可以提升程序性能的提示和技巧。

  目录

  我把性能优化技巧分为3个不同的等级:初级、中级和高级:

  初级

  在开发过程中,下面这些初级技巧需要时刻注意:

  使用ARC进行内存管理

  在适当的情况下使用reuseIdentifier

  尽可能将View设置为不透明(Opaque)

  避免臃肿的XIBs

  不要阻塞主线程

  让图片的大小跟UIImageView一样

  选择正确的集合

  使用GZIP压缩

  初级性能提升

  本部分内容介绍几本的程序性能提升技巧。其实所有级别的开发者都能从中获益。

  1) 使用ARC进行内存管理

  ARC是在iOS 5中发布的,它解决了常见的内存泄露问题——也是开发者容易健忘的。

  ARC的全称是“Automatic Reference Counting”——自动引用计数,它会自动的在代码中做retain/release工作,开发者不用再手动处理。

  下面是创建一个View通用的一些代码块:

  UIView *view = [[UIView alloc] init];// ...[self.view addSubview:view];[view release];

  在上面代码结束的地方很容易会忘记调用release。不过当使用ARC时,ARC会在后台自动的帮你调用release。

  ARC除了能避免内存泄露外,还有助于程序性能的提升:当程序中的对象不再需要的时候,ARC会自动销毁对象。所以,你应该在工程中使用ARC。

  下面是一些学习ARC很棒的一些资源:

  苹果的官方文档

  Matthijs Hollemans的初级ARC

  Tony Dahbura的如何在Cocos2D 2.X工程中使用ARC

  如果你仍然不确定ARC带来的好处,那么看一些这篇文章:8个关于ARC的神话——这能够让你相信你应该在工程中使用ARC!

  值得注意的是,ARC并不能避免所有的内存泄露。使用ARC之后,工程中可能还会有内存泄露,不过引起这些内存泄露的主要原因是:block,retain循环,对CoreFoundation对象(通常是C结构)管理不善,以及真的是代码没写好。

  这里有一篇文章是介绍哪些问题是ARC不能解决的 — 以及如何处理这些问题。

  2) 在适当的情况下使用reuseIdentifier

  在适当的情况使用reuseIdentifier

  在iOS程序开发中一个普遍性的错误是没有正确的为UITableViewCells、UICollectionViewCells和UITableViewHeaderFooterViews设置reuseIdentifier。

  为了获得佳性能,当在tableView:cellForRowAtIndexPath:方法中返回cell时,table view的数据源一般会重用UITableViewCell对象。table view维护着UITableViewCell对象的一个队列或者列表,这些数据源已经被标记为重用了。

  如果没有使用reuseIdentifier会发生什么?

  如果你在程序中没有使用reuseIdentifier,table view每次显示一个row时,都会配置一个全新的cell。这其实是一个非常消耗资源的操作,并且会影响程序中table view滚动的效率。