这段代码在每次遍历后释放所有autorelease对象

  更多关于NSAutoreleasePool请参考官方文档。

  24. 选择是否缓存图片

  常见的从bundle中加载图片的方式有两种,一个是用`imageNamed`,二是用`imageWithContentsOfFile`,第一种比较常见一点。

  既然有两种类似的方法来实现相同的目的,那么他们之间的差别是什么呢?

  `imageNamed`的优点是当加载时会缓存图片。`imageNamed`的文档中这么说:

  这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。

  相反的,`imageWithContentsOfFile`仅加载图片。

  下面的代码说明了这两种方法的用法:
 
UIImage *img = [UIImage imageNamed:@"myImage"]; // caching
 // or
 UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"]; // no caching

  那么我们应该如何选择呢?

  如果你要加载一个大图片而且是一次性使用,那么没必要缓存这个图片,用`imageWithContentsOfFile`足矣,这样不会浪费内存来缓存它。

  然而,在图片反复重用的情况下`imageNamed`是一个好得多的选择。

  25. 避免日期格式转换

  如果你要用`NSDateFormatter`来处理很多日期格式,应该小心以待。像先前提到的,任何时候重用`NSDateFormatters`都是一个好的实践。

  然而,如果你需要更多速度,那么直接用C是一个好的方案。Sam Soffes有一个不错的帖子(http://soff.es/how-to-drastically-improve-your-app-with-an-afternoon-and-instruments)里面有一些可以用来解析ISO-8601日期字符串的代码,简单重写一下可以拿来用了。

  嗯,直接用C来搞,看起来不错了,但是你相信吗,我们还有更好的方案!

  如果你可以控制你所处理的日期格式,尽量选择Unix时间戳。你可以方便地从时间戳转换到NSDate:
 
- (NSDate*)dateFromUnixTimestamp:(NSTimeInterval)timestamp {
 return [NSDate dateWithTimeIntervalSince1970:timestamp];
 }

  这样会比用C来解析日期字符串还快!

  需要注意的是,许多web API会以微秒的形式返回时间戳,因为这种格式在javascript中更方便使用。记住用`dateFromUnixTimestamp`之前除以1000好了。

  更多阅读

  下列这些WWDC视频强烈推荐给想要提高app性能的开发者。你首先需要保证你有使你的Apple ID注册为一个开发者身份才能看在这里看WWDC 2012的视频。

  #406: Adopting Automatic Reference Counting

  #238: iOS App Performance: Graphics and Animations

  #242: iOS App Performance: Memory

  #235: iOS App Performance: Responsiveness

  #409: Learning Instruments

  #706: Networking Best Practices

  #514: OpenGL ES Tools and Techniques

  #506: Optimizing 2D Graphics and Animation Performance

  #601: Optimizing Web Content in UIWebViews and Websites on iOS

  #225: Up and Running: Making a Great Impression with Every Launch

  一些01年的WWDC视频也很有价值:

  #308: Blocks and Grand Central Dispatch in Practice

  #323: Introducing Automatic Reference Counting

  #312: iOS Performance and Power Optimization with Instruments

  #105: Polishing Your App: Tips and tricks to improve the responsiveness and performance

  #121: Understanding UIKit Rendering

  其它一些值得看的视频,大部分来自iOS 5 Tech Talks:

  Your iOS App Performance Hitlist

  Optimizing App Performance with Instruments

  Understanding iOS View Compositing

  基于《Your iOS App Performance Hitlist》这个Michael Jurewitz的视频,Ole Begemann写了一篇文字总结的文章。

  Apple提供了一个非常有用的叫做“Performance Tuning | 性能调优”的资源。