当前位置: 首页 > news >正文

iOS应用冷启动优化,可以做哪些事情

main()函数之后

  1. 首屏渲染不需要的,在首屏渲染完成后,异步执行;
  2. 首屏渲染必要的,梳理依赖关系,生成启动树(startTree),调用 root 节点的 start 方法,依次执行各个节点;

main()函数之前

  1. 减少全局变量的数量;
  2. +load() 方法里的内容可以放到首屏渲染完成后再执行,或使用 +initialize() 方法替换掉。因为,在一个 +load() 方法里,进行运行时方法替换操作会带来 4 毫秒的消耗。不要小看这 4 毫秒,积少成多,执行 +load() 方法对启动速度的影响会越来越大;
  3. 减少 attribute((constructor)) 修饰的函数;
  4. 减少加载启动后不会去使用的类或者方法,可以根据符号表找出定义但没有被引用的类和方法(小心不要将利用 runtime 执行的方法也移除);
  5. 使用更少的动态库,使用动态库的数量较多时,尽量将多个动态库进行合并。数量上,苹果公司建议最多使用 6 个非系统动态库;

其他方式

  1. 二进制重排;
  2. Use more Swift;

    Swift 语言的设计避开了 C , C++ 和 Objective-C 中的许多隐患。

    • Swift 没有 initializer 。
    • Swift 改善了大小。
    • Swift 不允许存在未对齐的(misaligned)数据结构,未对齐的数据结构会在启动时消耗额外的时间。
  3. 缓存首屏渲染需要的网络数据,先使用缓存数据,新的数据请求完成后,再刷新UI;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ArcGIS Pro SDK (九)几何 12 多面体
  • 决策树的概念
  • 挖掘IPython的深度:%%dhist命令的历史探索之旅
  • Chapter17 表面着色器——Shader入门精要学习
  • keystone学习小结2
  • 深入理解Linux网络(四):TCP接收阻塞
  • 前端 Tips
  • pip安装出现的问题之SSL,一大堆WARNING问题
  • OD C卷 - 数据单元的变量替换
  • 初级java每日一道面试题-2024年7月23日-Iterator和ListIterator有什么区别?
  • C++五子棋(未做完,但能玩,而且还不错)
  • Hi3751V560_SELinux
  • Error和Exception区别
  • Jenkins卡在等待界面解决方法
  • python——pynput
  • 深入了解以太坊
  • 自己简单写的 事件订阅机制
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 2019年如何成为全栈工程师?
  • ES6之路之模块详解
  • Javascript设计模式学习之Observer(观察者)模式
  • Spark RDD学习: aggregate函数
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 高性能JavaScript阅读简记(三)
  • 七牛云假注销小指南
  • 如何实现 font-size 的响应式
  • 使用API自动生成工具优化前端工作流
  • 使用common-codec进行md5加密
  • 小程序开发之路(一)
  • 再次简单明了总结flex布局,一看就懂...
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 自动记录MySQL慢查询快照脚本
  • ​ubuntu下安装kvm虚拟机
  • #android不同版本废弃api,新api。
  • $(selector).each()和$.each()的区别
  • (03)光刻——半导体电路的绘制
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (30)数组元素和与数字和的绝对差
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (算法)Game
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)负载均衡,回话保持,cookie
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .net core Swagger 过滤部分Api
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 提取注释生成API文档 帮助文档
  • .NET中分布式服务
  • ::before和::after 常见的用法
  • [ NOI 2001 ] 食物链
  • [240607] Jina AI 发布多模态嵌入模型 | PHP 曝新漏洞 | TypeScript 5.5 RC 发布公告
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AIGC] Java 和 Kotlin 的区别