iOS面试资料搜集

iOS APP 加载过程和性能优化

2020-03-03  本文已影响0人  孙掌门

iOS APP 加载过程和性能优化

主要耗电原因

  1. 定时器
  2. 网络
  3. CPU
  4. 位置
  5. 图像,GPU
  6. 文件 IO,尽量不要频繁写数据,尽量一次性写入,读取大量数据的时候,可以考虑 GCD dispatch_io,数据量较大,建议使用数据库
  7. 减少,压缩网络数据

冷启动

app 从来没有启动过,从0到启动叫冷启动

热启动

已经启动过,没有杀死,再次启动

APP 启动过程

  1. app的启动主要有 dyld 负责,dyld 首先将可执行文件加载到内存当中,然后加载所有的依赖的动态库
  2. 然后由 runtime 负责加载 objc 定义的结构,比如类,分类等
  3. 初始化完毕,开始加载main函数
  4. 然后调用 APPdelegate 的 didFinishLaunchingWithOptions 方法

优化

  1. 减少动态库的依赖,没有用到的不要依赖
  2. 减少类和分类的数量,减少selector的数量
  3. 减少 C++ 虚函数的数量,减少虚表
  4. swift 尽量使用 struct
  5. 用 initialize 和 dispatch_once 方法 来取代 +load 方法
  6. main 函数和 didFinishLaunchingWithOptions 里面尽量少做操作,能延迟就延迟

瘦身

ipa 主要啊由可执行文件和资源文件组成

  1. 资源瘦身(图片视频),可以采用无损压缩的形式,去掉没有用到的资源(有开源项目)
  2. 编译器优化,将 Strip Linked Product,Make Strings Read-Only,Symbols Hidden by Default 设置为 yes。
  3. 去掉异常支持,Enable C++ Exceptions , Enabled Objective-C Exceptions 设置为 NO,Other C Flags 添加 -fno-exceptions
  4. 检测并去掉未使用的代码,利用 appcode ,code-inspect code ,检测
  5. Write Link Map File,可以看到我们的方法占用的大小,可借用开源库,github 上 LinkMap 来检测。
上一篇下一篇

猜你喜欢

热点阅读