您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 安卓开发 >> 正文

增强iOS应用程序性能的技巧

作者:佚名    责任编辑:admin    更新时间:2022-06-22

本文导航

1、首页2、iOS应用程序性能-2

在开发iOS应用程序时,让程序具有良好的性能是非常关键的。本文就25个增强iOS应用程序性能的提示和技巧进行了整理。

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

1.使用ARC进行内存管理

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

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

4.避免臃肿的XIBs

5.不要阻塞主线程

6.让图片的大小跟UIImageView一样

7.选择正确的集合

8.使用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

iOS应用程序性能

在适当的情况使用reuseIdentifier

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

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

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

自iOS 6以来,你可能还希望header和footer views,以及UICollectionView的cell和supplementary views。

为了使用reuseIdentifiers,在table view请求一个新的cell时,在数据源中调用下面的方法:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

如果table view维护的UITableViewCell队列或列表中有可用的cell,则从队列从移除一个已经存在的cell,如果没有的话,就从之前注册的 nib文件或类中创建一个新的cell。如果没有可以重用的cell,并且没有注册nib文件或类,tableview的 dequeueReusableCellWithIdentifier:方法会返回一个nil。

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

iOS应用程序性能

尽量将view设置为Opaque

如果view是不透明的,那么应该将其opaque属性设置为YES。为什么要这样做呢?这样设置可以让系统以最优的方式来绘制view。opaque属性可以在Interface Builder或代码中设置。