iOS 项目性能优化

  • 一, iOS 性能优化概述
    • 1. 项目多余图片资源释放
    • 2. 缓存图片优化
    • 3. 界面卡顿优化
    • 4.列表中阴影和圆角的处理
    • 5. 代码优化
    • 6. 安装包塑身

一, iOS 性能优化概述

  • 项目多余的图片资源需要释放
  • 选择是否缓存图片. 对imageName方法的使用判断
  • 界面卡顿优化
  • 列表中阴影和圆角的处理
  • 代码优化
  • 安装包塑身

1. 项目多余图片资源释放

分析工具LSUnusedResources的使用
整个本地图片资源30M以上, 占用较大空间
大概3M的本地图片资源从来没被使用

2. 缓存图片优化

常见的从bundle中加载图片的方式有两种,一个是用UIImageName,二是用imageWithContentOfFile,第一种比较常见一点。imageNamed的优点是当加载时会缓存图片。可以参考苹果官方文档imageNamed的文档,

3. 界面卡顿优化

卡顿原因分析:

  • Kingfisher框架的使用导致的内存暴涨
  • 后台返回的高清大图影响
  • layoutSubviews和cell赋值数据的时候处理大量逻辑

解决方法:
设置缓存大小,定时清理缓存

1.设置最大缓存容量

2.页面销毁的时候恢复, 并且删除menoryCache

3.把layoutSubviews的部分设置放到awakeFromNib

4.减少cell赋值数据的时候做过多耗时逻辑

4.列表中阴影和圆角的处理



可以发现现在滚动的性能大大提高了,光栅化对于那些有很多子view嵌套在一起、view的层级复杂或者有很复杂特效效果的图层有很明显的提升,因为这些内容都被缓存到位图当中了。但是使用光栅化需要注意一些内容:

  • 适用于内容基本不变的图层
    假如图层的内容经常变化,比如cell里面有涉及到动画之类的,那么缓存的内容就无效了,GPU需要重新创建缓存区,导致离屏渲染,这又涉及到OpenGL的上下文环境切换,反而降低性能。

  • 不要过度使用
    缓存区的大小被设置为屏幕大小的2.5倍,假如过分使用同样会导致大量的离屏渲染。

  • 如果缓存的内容超过100ms没有被使用则会被回收。

5. 代码优化

  • 方法抽取
  • tableView布局优化

  • cell注册完善

6. 安装包塑身

IOS 项目性能优化相关推荐

  1. 欢乐互娱庞池海:《龙之谷》项目性能优化经验分享

    欢乐互娱庞池海:<龙之谷>项目性能优化经验分享 在5月12日,UNITY 2017案例分享专场上,欢乐互娱技术引擎开发工程师娱庞池海分享了<龙之谷>项目性能优化经验.以下为分享 ...

  2. vuejs项目性能优化 - 总结篇

    首页等页面加载慢?打包编译后css/js文件过大?试试压缩.路由懒加载等技术 打包编译后,过大的文件如:app.css.app.js.vendor.js 本着 "开发环境".&qu ...

  3. vue项目性能优化——断点续传

    vue项目性能优化 用户上传文件的时候,如果文件过大,那么上传可能就会很耗时.而且一旦上传的过程中发生了网络中断,那上传就前功尽弃了.为了提高用户的体验,我们可以选择断点续传,也就是把文件切分成小块后 ...

  4. 项目性能优化之性能问题分析和压力测试

    项目性能优化之性能问题分析和压力测试 性能问题分析 为什么要性能优化 影响性能的关键要素 性能优化出发点 性能压力测试 什么是压力测试 压力测试的指标 常用压测工具 性能问题分析 为什么要性能优化 应 ...

  5. 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间

    最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...

  6. Vue项目性能优化篇

    Vue项目性能优化是个老生常谈的问题了,本人开发过程中也查过很多关于Vue项目优化的文章,每篇文章说的都差不多,本章我就结合我的心得和大家的智慧做一个总结. 1.懒加载 懒加载应该是提高性能的最简单有 ...

  7. iOS app性能优化的那些事

     iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...

  8. iOS之性能优化·优化App界面的渲染与流畅度

    一.界面渲染流程 ① 渲染流程分析 计算机中的显示过程通常是通过 CPU.GPU.显示器协同工作来将图片显示到屏幕上,如下图所示: 苹果为了解决图片撕裂的问题使用了 VSync + 双缓冲区的形式,就 ...

  9. iOS app性能优化

    instruments   在iOS上进行性能分析的时候,首先考虑借助instruments这个利器分析出问题出在哪,不要凭空想象,不然你可能把精力花在了1%的问题上,最后发现其实啥都没优化,比如要查 ...

  10. iOS之性能优化·提高App的编译速度

    一.前言 经过多年的开发和迭代,我相信很多的 iOS 项目代码已经达到几十万行甚至上百万行的规模,所使用的 Pod 库的数量可以达到几十个甚至上百个,App Store 安装包也变得越来越大,在这么大 ...

最新文章

  1. python相对路径库_如何最简单、通俗地理解Python的搜索路径、相对路径、绝对路径?...
  2. html如何让边框变圆,CSS怎样做出自适应圆形边框?
  3. 【408预推免复习】计算机组成原理之CPU的结构和功能
  4. 答答租车系统(面向对象综合练习)_JAVA
  5. springboot获取sessionid_Spring Boot 整合Redis, 用起来真简单!
  6. excel查标准正态分布_用EXCEL简易制作正态分布图
  7. codeforces:65
  8. java參数传递机制浅析
  9. java像sql一样处理数据_像Excel一样使用SQL进行数据分析
  10. STM32工作笔记0026---平时说的电气烧了是什么意思
  11. 组装电脑调整分区后分区丢失的资料找回方法
  12. angular2 图表指令ng2-echarts
  13. 洛谷1056 排座椅 解题报告
  14. JVM垃圾回收算法标记清除和复制算法
  15. iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸...
  16. MYSQL select ....outfile.....from.....
  17. MongoDb学习(四)--Repository
  18. Caused by: java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.HibernateTemplate
  19. 联想小新打印机M7268W配置步骤
  20. 首都师范 博弈论 5 4 2 Shapley值应用案例

热门文章

  1. 冲压工艺中常见的问题,值得收藏
  2. 信息论相对熵的凸性证明
  3. 产品经理认证(NPDP)知识体系指南.2017
  4. 被问到最多的淘口令API调用方法
  5. 一、最简单的爬虫(python3 爬虫小白系列文章)
  6. VsCode——创建Vue 模板
  7. 选择排序的Java代码实现(超详细代码)
  8. 信号ctft频谱matlab,信号、系统分析与控制(MATLAB版)第4章连续信号的频域分析.ppt...
  9. CTF—古典密码(凯撒密码、维吉尼亚密码、培根密码等)
  10. Excel常用快捷键与打印