zoukankan      html  css  js  c++  java
  • iOS应用性能调优的4个建议和技巧

     任何一个能在用户手机屏幕中占有一席之地的iOS app都包含3个关键因素:想法好、设计出色、性能卓越。本文将分享一些iOS应用性能调优的4个建议和技巧。

    Tip #1:把图片资源压缩到最小。
        iOS app通常都会使用图片资源,程序运行时会把这些图片从磁盘加载到内存,如果图片很大,加载速度就会很慢。为了提高性能,需要尽量压缩图片资源。苹果公司的UIKit 开发者Andy Matuschak指出:使用resizable image是最快的方法。

    Tip#2:延迟主线程操作
       把不需要在主线程执行的任务放到 NSOperationQueue或者Grand Central Dispatch,这个自不用说。
       对于需要在主线程执行的任务,需要注意不要干扰用户的操作,可以把这些任务分为以下2组:   1)View updates:view的任何改变都需要在主线程中。在iOS中延后这些操作很容易,有个规则叫做:不要调用我,我来调用你。(do not call us, we’ll cal you)。绝对不要主动调用drawRect:,调用setNeedsDisplay,然后iOS会在view停止滚动的时候重新渲染view。

      2)Processing: 有些很关键的任务不能在后台线程执行,例如保存Core Data database, 改变内存中的状态等等。可以把这些任务放到独立的代码块,并且在Default Runloop mode中执行,例如:

    [self performSelectorOnMainThread:@selector(processDataOnMainThread:)  withObject:dictionaryOfParameters
                        waitUntillDone:NO
                       modes:[NSArray arrayWithObject:NSDefaultRunLoopMode]]
    

         当用户开始滚动scrollview或者tableview的时候,run loop mode会被设置成 Common modes。当用户停止滚动时,它会被重置为Default Mode。因此,如果你直接使用[self processDataOnMainThread:dictionaryOfParams] ,那么函数将立即执行,而不管用户是否还在滚动view。但是如果用上面给的方法,那么iOS将在用户停止滚动view之后执行你的代码。

    Tip #3: 保持内存使用平滑
       下面是几个内存使用的尖峰时刻:
    a) app 启动时:加载尽量少的对象,会加快启动速度。
    b)   View Controler初始化时:使用尽量少得view,或者延迟实例化。
    c) UIWebview:UIWebview非常耗内存。使用时需要注意。

    Tip #4:避免不必要的图片缓存 
        通常我们会用imageNamed:来加载图片,但是用这个API有个问题,就是它会缓存加载的image。因此,对于那些被重用的图片,这个API很高效。但是对于那些使用很少的图片,用这个就很耗内存,那怎么才能及时的释放掉内存呢。使用initWithContentsOfFile:即可。  NSString path = [[NSBundle mainBundle] pathForResource:fileName ofType:fileType];  UIImage image = [[UIImage alloc] initWithContentsOfFile:path];  …  [image release];
         举个简单的例子,程序第一次使用时,会加载很多新手引导图片, 如果用initWithContentsOfFile:,这些图片所占用内存可以很快被释放,试试就知道。

    参见:
    1)https://news.ycombinator.com/item?id=4645585
    2)http://robots.thoughtbot.com/post/33427366406/designing-for-ios-taming-uibutton
    3)http://eng.pulse.me/tips-for-improving-performance-of-your-ios-application/  

    另外还有篇文章一起分享给大家:iOS应用性能调优的25个建议和技巧 英文原文:http://www.raywenderlich.com/31166/25-ios-app-performance-tips-tricks

  • 相关阅读:
    Minimum Path Sum,最短路径问题,动态规划
    UniquePaths,UniquePaths2,路径问题。动态规划。
    LengthOfLastWord,字符串最后一个子串的长度
    间隔问题,合并间隔(merge interval),插入间隔(insert interval)
    矩阵螺旋遍历Spiral Matrix,Spiral Matrix2
    Centos 5.2 下配置 php 的 json 扩展
    一个睡五分钟等于六个钟头的方法
    js div 排除内部的点击事件 就是 冒泡的处理
    做微信开发 “人脉圈的” 总结
    YII 学习笔记
  • 原文地址:https://www.cnblogs.com/akiha/p/5737265.html
Copyright ? 2011-2022 开发猿


http://www.vxiaotou.com