iOS App性能优化

来源:互联网 发布:js对联代码 编辑:程序博客网 时间:2024/05/17 23:45


iOS App性能优化

1、重用和延迟加载

越多的视图就有越多的绘图操作,最终意味着更多的CPU和内存开销。

(1)重用:不要一次创建所有的子视图,而是在你需要的时候创建,然后把它们加入重用队列中,如UITableView;

(2)合理选择视图的创建时机

a,提前创建,延迟加载:消耗了更多的内存,因为你从创建到释放都保留了它的内存,然而在使用的时候其相应比较快速;

b,需要时创建,并加载:相对消耗较少的内存,但是加载使用会相应较慢。



2、重用大开销对象

有的对象初始化非常慢,如NSDateFormatter NSCalendar

设置一个NSDateFormatter的日期格式几乎跟创建一个新的一样慢。因此,如果在你的应用中你频繁需要处理多个日期格式,你的代码应该获利于初始化创建,重用,多个NSDateFormatter对象。



3、处理内存警告

(1)实现App代理中的applicationDidReceiveMemoryWarning方法;

(2)重载UIViewController子类的didReceiveMemoryWarning方法;

(3)注册通知UIApplicationDidReceiveMemoryWarningNotification,接收通知。

一旦收到这些警告,你的处理方法必须立刻响应并释放不必要的内存。



4、避免重复处理数据

很多app调用函数获取远程服务器上的数据.这些数据通常是通过JSON 或者 XML格式来传输。非常重要的是在请求和接收数据的时候努力在两端使用相同的数据结构。理由?在内存中操纵数据以合适你的数据结构是非常昂贵的。

比如,如果你需要在表格视图中显示数据,最好请求和接收数据是数组的格式,以避免任何中间操纵数据,使其适合你在app中使用的数据结构相似的,如果你的应用程序依赖于访问特定值的键,那么你可能会想要请求和接收一个键/值对的字典。

通过第一次就获取正确格式的数据,在自己的应用程序中你就会避免很多的重复处理工作,使数据符合你的选择的结构。


5、选择正确的数据格式

(1)JSON是一种通常比XML小且解析更快的格式,传输的内容也比较小。

(2)XML的优势:当你使用SAXparsing方法时,你可以在传输过程中读取它,在面对非常大的大数据时不必像JSON一样在数据下载完后才开始读取。



6、恰当的设置背景图片

(1)调用UIColorcolorWithPatternImage创建的颜色:重复的创建小的模式图片,在这种情况下用UIImageView方式会节约很多内存

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];


(2)添加一个UIImageView子试图给View

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]];

 

  [self.view addSubview:backgroundView];




7、减少网络占用

UIWebView 是非常有用的.它非常容易用来显示web内容,甚至创建你app的视窗。这些都是标准UIKit 空间很难做到的。尽管如此,你可能注意你可以用在你的app中的UIWebView组件并没有Apple的Safari app快。这是Webkit’s的Nitro引擎的限制使用。

       所以为了获得最佳的性能,你需要调整你的HTML。第一件事是尽可能多的避免Javascript,包括避免大的框架比如jQuery。有时使用vanilla Javascript取代依赖的框架会快很多。随时随地遵循异步加载Javascript文件的实践。特别当它们不直接影响到页面表现的时候,比如分析脚本。

       最后,总是要意识到你在用的图片,保持图片的正确尺寸



8、优化表格式图

表格视图需要快速的滚动,如果不能,用户能确切注意到很滞后。


为了让你的表格视图流畅的滚动,保证你实现了下列的建议。

  • 1通过正确的reuseIdentifier重用cells
  • 2尽量多的设置views为不透明,包括cell本身。
  • 3避免渐变,图像缩放,屏幕以外的绘制。
  • 4如果行高不总是一样,缓存它们。
  • 5如果cell显示的内容来自网络,确保异步和缓存。
  • 6使用shadowPath来建立阴影。
  • 7减少子视图的数目。
  • 8cellForRowAtIndexPath:中做尽量少的工作,如果需要做相同的工作,那么只做一次并缓存结果。
  • 9使用适当的数据结构存储你要的信息,不同的结构有对于不同的操作有不同的代价。
  • 10使用rowHeightsectionFooterHeightsectionHeaderHeight为常数,而不是询问代理。





9、选择正确的数据存储方式

1),使用NSUserDefaults 存储数据,适用于存储一些简单的数据;

2),存储在结构化文件中,如XMLplist,Json。在解析前你需要加载整个文件到内存,这个过程非常耗时;

3),NScodeing 同样需要读取文件

4),对于大数据,最好的解决方法是使用SQLite或者CoreData;


SQLite 与 CoreData 最大的不同就是他们的使用方法。CoreData呈现为一个对象图模型,SQLite是一个传统的DBMS(数据库管理系统)。




10、加速App启动时间

最大的事情就是保证你的App开始尽量的快。尽量多的执行异步任务,如网络请求,数据库访问,或者数据解析。尽量避免臃肿的XIBs,因为它会在主线程中加载(故事版不会存在这个问题)。



更多优化技巧和方案,等你发掘!



1 0
原创粉丝点击