iOS app启动如何优化?

1.main函数之前系统做了那些事?
dyld(动态链接器)
-> 读取镜像文件,递归查找动态库
->ImageLoader将其加载到内存中
->rebase/bind修复镜像中的资源指针,来指向正确的地址
->dyld通知runtime
->map_image去解析和处理该镜像资源(注册Objc类,处理Category等)
->调用load_image,遍历调用类的load方法,调用C++的构造函数属性函数,创建非基本类型的C++静态全局变量等

  1. 我们可以通过在 Xcode 中 Edit scheme -> Run -> Auguments 将环境变量
    DYLD_PRINT_STATISTICS 设为 1,在控制台看到main()函数之前的启动时间。
  2. 分解优化⽬标 分步达到优化⽬的
    1). 耗时操作异步处理
    2). 如果启动流程依赖⽹络请求回来才能继续,那么需要考虑⽹络极差情况下的启
    动速度
    3). 如果APP有loading⼴告⻚并且对分辨率的要求较⾼,请尝试做缓存吧
    4). 主⻚⾯Controller中的viewDidLoad和viewWillAppear⽅法中尽量少做事情
    5). 排查清理项⽬中未使⽤到的类库以及Framework
    6). 删减合并⼀些OC类,删减没有⽤到或者可以不⽤的静态变量、⽅法等
    7). 轻量化+load⽅法中的内容,可延迟到+initialize中
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一个项目做的时间长了,启动流程往往容易杂乱,库也用的越来越多,APP的启动时间也会慢慢变长。本次将针对iOS...
    酱油瓶2阅读 3,617评论 0 12
  • 应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、...
    新_1740阅读 476评论 0 2
  • 应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、...
    hgl阅读 489评论 0 0
  • 海上日出:新年的第一个日出,大家喜欢去海边看。冬末季节日照海边多雾,好似烟雨朦胧,若隐若现里,海水共长天一色,界限...
    长腿程阅读 417评论 1 1
  • 老头腿不行了,在康复中只能扶着栏杆走,我腿脚灵便却躺着浪,这就是得到与失去,幸与不幸! 他抬头望那天空,他想飞,但...
    纵情嬉戏天地间阅读 159评论 0 2

友情链接更多精彩内容