IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS 性能优化 -> 正文阅读

[移动开发]iOS 性能优化

近四年没更CSDN了,感慨万千。

????????近年来在搞一款比较大的APP,项目中代码量100w+,里面各种三方库、其他领域的二级制包比较多;以前这些三方、二进制都挤在一个工程目录下,导致耦合性太大,项目看着特别杂乱臃肿,新人着手时往往无从下手;两年前某大佬带队搞了一波解耦合,该拆的拆,该解的解,如今的项目还是比较清晰明了的,按照模块划分出各种framework进行集成,便于管理。

? ? ? ? 即使解耦合,项目中的100w+代码量还是实实在在的,性能优化与IPA瘦身不得不提。

????????基本上如果项目运行起来,手机发烫页面卡顿,不用想,肯定哪里又内存泄漏了;如今的手机性能,如果仅仅是开发人员技术问题导致内存消耗,那是到不了发烫的程度,从内存泄漏方面排查会比较实用。

????????近年来招聘过程中,内存优化是必考问题,很多面试者都来自于小公司,涉及项目比较小,对于内存优化从来没有关注过,能说上来个一二三的,寥寥无几。

? ? ? ? 今天我们先说说性能优化,关于IPA瘦身,下次再约。

1、属性修饰词

? ? ? ? 这个比较基础了,放在这里说感觉不太合适,但又不得不说,就提一句

atomic:原子属性,setter方法会加自旋锁,线程安全,避免了线程中抢夺资源引起的数据异常问题,但会导致资源消耗增大,降低效率,各位酌情使用

nonatomic:非原子属性,线程不安全,但效率高,开发中使用的也较多

2、UIImage的加载

????????常见的就是UIImage的使用了,加载图片一般有两种方式:

通过名字加载::[UIImage imageNamed:],系统会对其进行缓存,并且不会释放,也无法手动清理; 通过路径加载:imageWithContentsOfFile或者initWithContentsOfFile。系统不会对其缓存,图片不在使用时,会被释放。

? ? ? ? 对于使用频率低、图片比较大的资源,建议使用后者。

3、UIImage改变颜色

????????还有一种情况,是给UIImage改变颜色,例如项目中设定主题颜色,一些小按钮标志也需要跟随主题颜色而变化。

????????如果直接使用Core Graphics API更改UIImage颜色,那么内存中会额外生产一个图像,导致内存消耗。

????????建议方案设置其tintColor,图片使用UIImageRenderingModeAlwaysTemplate的方式加载

view.tintColor = [UIColor redColor];
UIImage *image = [[UIImage imageNamed:imgName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

?4、drawRect绘制

????????创建UIView后,如果使用drawRect对其重新绘制,那么内存消耗会超出你的想象,建议使用CAShapeLayer来代替drawRect

????????CAShapeLayer基本可以完爆drawRect,渲染快,内存使用高效,边缘柔和不会有像素块,做柱状图的首选。`

5、drawInContext

请使用CAShapeLayer

6、控件设置背景色

控件如果有背景色,那么会增大内存消耗

尽量使用UIView+控件方式,来达到想要的目的。

先到这里,小可爱不乖了,我去看看

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:58:23  更:2021-10-04 12:59:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:50:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码