续 性能优化(中)

22. 加速启动时间

快速打开app是很重要的,特别是用户第一次打开它时,对app来讲,第一印象太太太重要了。

  • 你能做的就是使它尽可能做更多的异步任务,比如加载远端或者数据库数据,解析数据。
    还是那句话,避免过于庞大的XIB,因为他们是在主线程上加载的。所以尽量使用没有这个问题的Storyboards吧!
    注意,用Xcode debug时watchdog并不运行,一定要把设备从Xcode断开来测试启动速度
23. 使用Autorelease Pool

NSAutoreleasePool负责释放block中的autoreleased objects。一般情况下它会自动被UIKit调用。但是有些状况下你也需要手动去创建它。
假如你创建很多临时对象,你会发现内存一直在减少直到这些对象被release的时候。这是因为只有当UIKit用光了autorelease pool的时候memory才会被释放。
好消息是你可以在你自己的@autoreleasepool里创建临时的对象来避免这个行为:

    NSArray *urls = <# An array of file URLs #>;for(NSURL *url in urls) {@autoreleasepool {NSError *error;NSString *fileContents = [NSString stringWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:&error];/* Process the string, creating and autoreleasing more objects. */}}

这段代码在每次遍历后释放所有autorelease对象
更多关于NSAutoreleasePool请参考官方文档。

24. 选择是否缓存图片

常见的从bundle中加载图片的方式有两种,一个是用imageNamed,二是用imageWithContentsOfFile,第一种比较常见一点。

既然有两种类似的方法来实现相同的目的,那么他们之间的差别是什么呢?

imageNamed的优点是当加载时会缓存图片。imageNamed的文档中这么说:
这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。
相反的,imageWithContentsOfFile仅加载图片。
下面的代码说明了这两种方法的用法:

UIImage *img = [UIImage imageNamed:@"myImage"];// caching
// or
UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"];// no caching

那么我们应该如何选择呢?
如果你要加载一个大图片而且是一次性使用,那么就没必要缓存这个图片,用imageWithContentsOfFile足矣,这样不会浪费内存来缓存它。
然而,在图片反复重用的情况下imageNamed是一个好得多的选择。

25. 避免日期格式转换

如果你要用NSDateFormatter来处理很多日期格式,应该小心以待。就像先前提到的,任何时候重用NSDateFormatters都是一个好的实践。
然而,如果你需要更多速度,那么直接用C是一个好的方案。Sam Soffes有一个不错的帖子(http://soff.es/how-to-drastically-improve-your-app-with-an-afternoon-and-instruments)里面有一些可以用来解析ISO-8601日期字符串的代码,简单重写一下就可以拿来用了。
嗯,直接用C来搞,看起来不错了,但是你相信吗,我们还有更好的方案!
如果你可以控制你所处理的日期格式,尽量选择Unix时间戳。你可以方便地从时间戳转换到NSDate:

    - (NSDate*)dateFromUnixTimestamp:(NSTimeInterval)timestamp {return[NSDate dateWithTimeIntervalSince1970:timestamp];}

这样会比用C来解析日期字符串还快!
需要注意的是,许多web API会以微秒的形式返回时间戳,因为这种格式在javascript中更方便使用。记住用dateFromUnixTimestamp之前除以1000就好了。

iOS最全性能优化(下)相关推荐

  1. iOS最全性能优化(中)

    续 性能优化(上) 9. 重用和延迟加载(lazy load) Views 更多的view意味着更多的渲染,也就是更多的CPU和内存消耗,对于那种嵌套了很多view在UIScrollView里边的ap ...

  2. iOS App 启动性能优化

    为什么80%的码农都做不了架构师?>>>    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq. ...

  3. MySQL史上最全性能优化方式

    MySQL有哪些性能优化方式?这个问题可以涉及到 MySQL 的很多核心知识,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 所 ...

  4. C#实用杂记-EF全性能优化技巧

    原文链接:http://www.makmong.com/947.html#comment-31 EntityFramework 优化建议 2016年1月15日 下午4:54 LEILINKANG En ...

  5. 全网最全性能优化总结!!(冰河吐血整理,建议收藏)

    大家好,我是冰河~~ 随着互联网的高速发展,互联网行业已经从IT时代慢慢步入到DT时代.对于Java程序员的要求越来越高,只是单纯的掌握CRUD以不足以胜任互联网公司的相关职位,大量招聘岗位显示:如果 ...

  6. iOS 10 UICollectionView 性能优化

    前言 关于 iOS 10 UICollectionView的新特性,主要还是体现在如下3个方面 顺滑的滑动体验 现在基本上人人都离不开手机,手机的app也每天都有人在用.一个app的好坏由它的用户体验 ...

  7. 硬件加速下webview切换闪屏_网页渲染性能优化 —— 性能优化下

    博客 有更多精品文章哟. Composite 的优化 终于,我们到了像素管道的末尾.对于这一部分的优化策略,我们可以从为什么需要 Composited Layer(Graphics Layer)来入手 ...

  8. Android应用性能优化下电子书pdf下载

    Android应用性能优化下载链接: https://pan.baidu.com/s/1QZRfnVxAGXU7HpF7Pna6mw 提取码获取方式:关注下面微信公众号,回复关键字: 1122

  9. iOS开发之性能优化

    1.避免过于庞大的XIB 当加载XIB的时候把所有的东西都放在了内存里,包括任何的图片:如果有一个不会即刻用到的view,就会浪费宝贵的内存资源了. 当加载一个引用了图片或者声音资源的nib时,nib ...

最新文章

  1. FD.io/VPP — 常用指令集合
  2. 趣谈设计模式 | 职责链模式(ChainOfResposibility):请求的转发处理
  3. (二)元学习算法MAML简介及代码分析
  4. 46. 避免 CSS 表达式(7)
  5. PTV-VISSIM交通仿真
  6. memcached-tool
  7. 直流电机驱动电路设计
  8. 解决问题:failed to lazily initialize a collection of role异常解决
  9. SpringCloud 微服务工具集v1.1
  10. Android Studio 命令行Gradle编译
  11. java long保留两位小数
  12. 阿里云有奖调查!赠10个阿里巴巴logo胸针
  13. 什么是Restful风格
  14. 有时候缘分来了,挡也挡不住,我们终究能等到对的那个人。
  15. nginx配置文件结构1
  16. 解决方案:Zotero实现参考文献中英文混排,将英文文献中的“等”转成“et al.”
  17. js爬取国家统计局行政区划(广东省)
  18. 银河麒麟系统常见问题
  19. 还在用chatGPT聊天?《元宇宙2086》已开始用AIGC做漫画连载了!
  20. 游戏编程入门(18):使用闪屏增添游戏的活力

热门文章

  1. 文件上传漏洞 解析、验证、伪造(二)
  2. 【JavaScript学习笔记2】JS中常见的输出方式-控制台输出信息
  3. 小米android8.0新功能,小米6搭载安卓8.0终于来了 多任务界面风格大变
  4. 【NOIP2012】开车旅行
  5. android截屏元素不全,截图总不全?2招教你网页完整截图和全文拼图
  6. android8OPPO,基于安卓8.1!OPPO R15深度体验:ColorOS 5.0焕然一新
  7. 字符串的截取substr
  8. linux操作:查看nginx实际调用的配置文件与重启nginx
  9. 一小段Python代码,破解加密zip文件的密码
  10. 原海思专家看 HW 事件,你想知道的都在这里