JSON

25条提高iOS App性能的技巧和诀窍

字号+ 作者:H5之家 来源:H5之家 2016-09-14 13:00 我要评论( )

X枫林提供全面的移动开发、网络编程、脚本编程、网页制作、网页特效,网站建设为站长与网络编程从业者提供学习资料。

这篇文章来自iOS Tutorial Team 成员, 他是Movile的一个iOS开发者. Check out hispersonal websiteorfollow him on Twitter.原文地址

当我们开发iOS应用时,好的性能对我们的App来说是很重要的。你的用户也希望如此,但是如果你的app表现的反应迟钝或者很慢也会伤害到你的审核。

然而,由于IOS设备的限制有时很难工作得很正确。我们开发时有很多需要我们记住这些容易忘记的决定对性能的影响。

这是为什么我写这篇文章的原因。这篇文章用备忘录的形式集合了25个技巧和诀窍可以用来提高你的app性能。所以保持阅读来给你未来的App一个很不错的提高。

写了一个使用Instruments优化代码的的教程

以下这些技巧分为三个不同那个的级别---基础,中级,高级

基础

这些技巧你要总是想着实现在你开发的App中。

1.用ARC去管理内存(Use ARC to Manage Memory)

2.适当的地方使用reuseIdentifier(Use areuseIdentifierWhere Appropriate)

3.尽可能设置视图为不透明(Set View as Opaque When Possible)

4.避免臃肿的XIBs文件(Avoid Fat XiBs)

5.不要阻塞主进程(Don't Block the Main Thread)

6.调整图像视图中的图像尺寸(Size Images to Image Views)

7.选择正确集合(Choose the Correct Collection)

8.启用Gzip压缩(Enable GZIP Compression)

中级

这些技巧是当你遇到更复杂的情况的时候使用。

9. 重用和延迟加载视图(Reuse and Lazy Load Views)

10.缓存,缓存,缓存(Cache,Cache,Cache)

11.考虑绘图(Consider Drawing)

12.处理内存警告(Handle Memory Warnings)

13.重用大开销对象(Reuse Expensive Objects)

14.使用精灵表(Use Sprite Sheets)

15.避免重复处理数据(Avoid Re-Processing Data)

16.选择正确的数据格式(Choose the Right Data Format)

17.适当的设置背景图片(Set Background Images Appropriately)

18.减少你的网络占用(Reduce Your Web Footprint)

19.设置阴影路径(Set the Shadow Path)

20.你的表格视图Optimize Your Table Views)

21.选择正确的数据存储方式(Choose Correct Data Storage Option)

高级

这些技巧你应该只在你很积极认为它们能解决这个问题,而且你觉得用它们很舒适的时候使用。

22.加速启动时间(Speed up Launch Time)

23.使用自动释放池(Use AutoRelease Pool)

25.尽可能避免日期格式化器(Avoid Date Formatters Where Possible)

没有其他的,一起去看看这些技巧吧!

基础的性能提升

1)用ARC去管理内存

ARC是伴随IOS5 一起发布的,它用来消除常见的的内存泄漏。

ARC是"Automatic Reference Counting"的缩写。它自动管理你代码中的retain/release循环,这样你就不必手动做这事儿了。

下面这段代码展示了创建一个view的常用代码

UIView *view =[[UIView alloc] init]; //... [self.view addSubview:view]; [view release];

这里极其容易忘记在代码结束的地方调用release,ARC将会自动的,底层的为你做这些工作。

除了帮助你你避免内存泄漏,ARC还能保证对象不再使用时立马被回收来提高你的性能。你应该在你的工程里多用ARC。

这里是一些学习更多关于ARC的非常棒的资源

  • 苹果的官方文档。
  • Matthijs Hollemans’sBeginning ARC in iOS Tutorial
  • Tony Dahbura’sHow To Enable ARC in a Cocos2D 2.X Project
  • 值得注意的是ARC不能消除所有的内存泄漏。你依然有可能内存泄漏,这主要可能是由于blocks(块),引用循环,CoreFoundation对象管理不善(通常是C结构体,或者是确实很糟糕的代码)。


    如果你不用reuseIdentifier 会怎么样呢?

    如果你用,你的tableview每显示一行将会配置一个全新的cell。这是非常费事的操作而且绝对会影响你app滚动的性能。

    自从引进了iOS6,你应该为header and footer 视图设置reuseIdentifiers,就像在UICollectionView’s cells 和 supplementary views(补充视图)一样。

    使用reuseIdentifiers,当你的数据源要求提供一个新的cell给tableview的时候调用这个方

    NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];


    3)可能的时候设置视图为不透明

    如果你有不透明视图(opaque views)--也就是说,没有透明度定义的视图,你应该设置他们的opaque属性为YES。

    为什么? 这会允许系统以最优的方式绘制你的views。这是一个简单的属性可以在Interface Builder 和代码中设置。

    苹果的文档中有对这个属性的描述

    这个属性提供了一个提示给图系统如何对待这个视图。如果设置为YES,绘制系统将会把这个视图视为完全不透明。这样允许系统优化一些绘制操作和提高性能。如果设置为NO,绘图系统会复合这个视图和其他的内容,这个属性的默认值是YES

    在相对静态的屏幕上,设置opaque属性不会有什么大问题。尽管如此,如果你的视图是嵌入在一个scrollView,或者是一个复杂的动画的一部分,不设置这个属性绝对会影响你的程序的性能。

    你也可以使用Debug\Colorolor Blended Layers选项 在你的模拟器中形象化的看见没有设置为不透明(opaque)的视图.你的目标应该是尽可能多的设置视图为透明。


    4)避免臃肿的XIB文件

    故事板,由iOS5引进,很快的替代XIBs。尽管如此,XIBs在一下情况下依然是很有用的。如果你需要在IOS5之前版本的设备上运行或者你想自定义重用的视图,那么你确实不能避免使用它们。

    如果你专注使用XIBs,那么让它们尽量的简单。尝试为一个试图控制器创建一个XIB,如果可能的话,把一个视图控制器的视图分层管理在单独的XIBs中。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • php使用json_decode返回NULL

      php使用json_decode返回NULL

      2016-09-14 13:00

    • php基于jquery的ajax技术传递json数据简单实例,jqueryjson

      php基于jquery的ajax技术传递json数据简单实例,jqueryjson

      2016-09-05 18:01

    • php中的Json函数在jquery中的使用

      php中的Json函数在jquery中的使用

      2016-09-01 14:00

    • www.93847xjj100.com新锦江备用网址

      www.93847xjj100.com新锦江备用网址

      2016-08-29 16:00

    网友点评