iOS应用程序性能的提示和技巧(中)
作者:网络转载 发布时间:[ 2013/5/10 10:36:51 ] 推荐标签:
在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。
然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有许多事项需要记住,并且关于性能影响很容易忘记。
这是为什么我要写这篇文章!本文收集了25个关于可以提升程序性能的提示和技巧。
目录
我把性能优化技巧分为3个不同的等级:初级、中级和高级:
中级
在性能优化时,当你碰到一些复杂的问题,应该注意和使用如下技巧:
重用和延迟加载View
缓存、缓存、缓存
考虑绘制
处理内存警告
重用花销很大的对象
使用Sprite Sheets
避免重新处理数据
选择正确的数据格式
设置适当的背景图片
降低Web内容的影响
设置阴影路径
优化TableView
选择正确的数据存储方式
中级性能提升
现在,在进行代码优化时,你已经能够完成一些初级性能优化了。但是下面还有另外一些优化方案,虽然可能不太明显(取决于程序的架构和相关代码),但是,如果能够正确的利用好这些方案,那么它们对性能的优化将非常明显!
9) 重用和延迟加载View
程序界面中包含更多的view,意味着界面在显示的时候,需要进行更多的绘制任务;也意味着需要消耗更多的CPU和内存资源。特别是在一个UIScrollView里面加入了许多view。
这种情况的管理技巧可以参考UITableView和UICollectionView的行为:不要一次性创建所有的subview,而是在需要的时候在创建view,并且当view使用完毕时候将它们添加到重用队列中。
这样可以仅在UIScrollView滚动的时候才配置view,以此可以避免分配创建view的带来的成本——这可能是非常耗资源的。
现在有这样的一个问题:在程序中需要显示的view在什么时机创建(比如说,当用户点击某个按钮,需要显示某个view)。这里有两种可选方法:
在屏幕第一次加载以及隐藏的时候,创建view;然后在需要的时候,再把view显示出来。
直到需要显示view的时候,才创建并显示view。
每种方法都有各自的优点和确定。
使用第一种方法,需要消耗更多的内容,因为创建出来的view一直占据着内存,直到view被release掉。不过,使用这种方法,当用户点击按钮时,程序会很快的显示出view,因为只需要修改一下view的可见性即可。
而使用第二种方法则产生相反的效果;当需要的时候猜创建view,这会消耗更少的内存;不过,当用户点击按钮的时候,不会立即显示出view。
10) 缓存、缓存、缓存
在开发程序时,一个重要的规则是“缓存重要的内容”——这些内容一般不会改变,并且访问的频率比较高。
可以缓存写什么内容呢?比如远程服务器的响应内容,图片,甚至是计算结果,比如UITableView的行高。
NSURLConnection根据HTTP头的处理过程,已经把一些资源缓存到磁盘和内存中了。你甚至可以手动创建一个NSURLRequest ,让其只加载缓存的值。
下面的代码片段一般用在为图片创建一个NSURLRequest:
+ (NSMutableURLRequest *)imageRequestWithURL:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.cachePolicy = NSURLRequestReturnCacheDataElseLoad; // this will make sure the request always returns the cached image request.HTTPShouldHandleCookies = NO; request.HTTPShouldUsePipelining = YES; [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; return request;}
注意:你可以使用NSURLConnection抓取一个URL请求,但是同样可以使用AFNetworking来抓取,这种方法不用修改所有网络相关的代码——这是一个技巧!:]
如果你要直到更多关于HTTP 缓存, NSURLCache, NSURLConnection 以及相关的内容, 那么看一下NSHipster中的the NSURLCache entry。
如果你需要缓存的内容没涉及到HTTP请求,那么使用NSCache。
NSCache的外观和行为与NSDictionary类似, 但是,当系统需要回收内存时,NSCache会自动的里面存储的内容。Mattt Thompson 在NSHipster上写了一篇关于NSCache非常不错的文章。
如果还想知道关于HTTP缓存更多的内容,那么建议阅读一下Google的这篇文章:best-practices document on HTTP caching。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11