UITableView性能提升和优化(第3章)之一-创新互联

在本章,你将做下面这些事情:

公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出西塞山免费做网站回馈大家。
  • 在实例中使用第2章介绍的测试工具

  • 在例子中一步一步的对滚动性能进行优化

  • 使用以下技术对UITableView进行优化

       1)  使用基本的技术优化UITableView中简单的cells

       2)  通过代码使用核心技术在cell中绘制view

       3)  使用基本的技术来优化需要像正在编辑,重排序等动画的cell

       4)  开发者需要知道的一些其他技术

iPhone应用程序通常通过列表的形式来显示数据。苹果为开发者提供了非常好用的工具:UITableView 和 UITableViewCell。如果开发者只是想使用一些基本的功能,如在左边显示一张小图片,中间显示文本,那么苹果提供的默认控制就能够很好的满足要求了。但是如果你想自定义一些东西,比如显示2张或3张图片,把文本放在不同的地方,你就会遇到问题。如果这样的话,你迟早会遇到UITableView性能方面的一些问题,尤其是在像iPhone 3G这种老设备上。

例子介绍

在这个例子中,我会基于两个主要因素来衡量性能:UITableView dequeue一个cell,创建一个cell的速度,或cell返回给操作系统的速度;操作系统渲染你的cell,然后显示在机器上的速度。第一个使用NSLog就可以测量出来;第二个比较复杂,只能通过CoreAnimation进行测量。

我将用两个不同的例子来说明问题。一个只包含了图片和文字;另一个包含了很多复杂的子view。通过这两个例子,你会发现有很多不同的方法来优化UITableView滚动时的性能。

在本章结束时,我会列出很多重要的知识点,由于时间有限,我不会做详细的介绍。这些并不是一些常见的错误,但是如果某个开发者因为粗心而犯了其中的一些错误,有可能花上一整天的时间测试和查找问题。我想确保你已经有足够的技能和知识来处理各种情况。

有时候优化非常简单,只需要在代码中做一些小小的改动。然而在其他情况下,比如第二个例子,你需要重写整个代码来,从而达到更好的性能。我希望在例子介绍完后,你对整个程序的架构有一个非常清晰的认识,这样你在开始的时候就能够做出正确的决定,而不需要重写代码。

复习测试工具

在本章,你将使用CoreAnimation工具对iphone OS的渲染性能进行测试。这能帮助你了解问题是出现在计算过程中还是在显示过程中。第2章已经介绍了这个工具,所以本章只进行一个简短的回顾。

图 3-1 显示了CoreAnimation工具的主视图,运行时有3个部分你需要观察,图3-2显示了性能的参数值。

UITableView性能提升和优化(第3章) 之一

图 3-1 CoreAnimation 工具的主要部分

UITableView性能提升和优化(第3章) 之一

图 3-2 最近的性能显示

第一个例子

第一个例子将会一步一步的展示如何优化UITableView的滚动性能。最初版本的源代码包含了我从很多开发者那边搜集到的性能使用上的错误。在这个过程中,你会看到在每一步优化后,性能都会有所提升。

介绍第一个例子

如图3-3,你有一个普遍而又实际的问题,那就是你需要开发一个UITableView,在每一个cell中有一张图片和一个文本块。我将带你查看这个例子的源代码。让我们看一下类似Facebook的应用;应用需要一张图片显示头像,需要另一张图片显示用户分享的链接内容。这个应用同样也需要一张更小的图片来显示cell中的图标。在第一个测试中,请参考SlowPerformanceTableView这个工程。

UITableView性能提升和优化(第3章) 之一

图 3-3 第一个例子的应用

标准测试

在项目开始之前,你必须知道你的最终目标;在这个例子中,你要达到的目标就是有一个很好的性能,当在滚动和使用你的应用时,你可以带给用户一个很好的体验。因此,通过运行一个正常的没有自定义的UITableViewCell,它会按需加载一张简单的图片并会对图片进行重用,表格 3-1显示了运行时的日志。

UITableView性能提升和优化(第3章) 之一

表格 3-1 运行例子的结果

用CoreAnimation进行测试,每秒渲染的帧数(fps)的最佳性能是60fps(数字越高,性能越好)。对于一个标准的UITableViewCell,通常的速度在 55-60fps之间;这应该是你的目标之一。另一个目标是确保预加载的时间足够的小。当总体时间减少了,cell预加载的时间同样会减少。但是,减少cell预加载的时间更简单,因此在这个例子中,主要集中在如何减少预加载的时间。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:UITableView性能提升和优化(第3章)之一-创新互联
文章地址:http://scyanting.com/article/diiijg.html