美文网首页
启动优化

启动优化

作者: de7e01056dd4 | 来源:发表于2017-10-11 09:38 被阅读12次

    App启动过程

    • 解析Info.plist

      沙箱建立、权限检查

    • Mach-O 加载
    1. 加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法)
    2. 执行声明为__attribute__((constructor))的C函数
    3. 加载类扩展(Category)中的方法
    4. C++静态对象加载、调用ObjC的 +load 函数
    • 程序执行

    调用main()
    调用UIApplicationMain()
    调用applicationWillFinishLaunching()

    App的启动时间

    Xcode 已经默认支持 Environment Variables


    main函数之前

    DYLD_PRINT_STATISTICSvalue为1的环境变量

    main()函数之前影响因素
    1. 动态库加载越多,启动越慢
    2. Objc类越多,启动越慢
    3. C的constructor越多,启动云
    4. C++静态对象越多,启动越慢
    5. Objc的+load越多,启动越慢
    main()函数之后耗时的影响因素
    1. 执行main()函数的耗时
    2. 执行applicationWillFinishLaunching的耗时
    3. rootViewController及其childViewController的加载、view及其subviews的加载
    移除不需要的动态库
    移除不需要用到的类
    合并功能类似的类和扩展(Category)
    优化applicationWillFinishLaunching
    优化rootViewController加载
    

    参考链接

    iOS性能优化探讨

    相关文章

      网友评论

          本文标题:启动优化

          本文链接:https://www.haomeiwen.com/subject/dlpfextx.html