美文网首页
iOS App 启动优化

iOS App 启动优化

作者: zzm1013 | 来源:发表于2020-08-27 20:35 被阅读0次

    1. pre-main阶段的优化

    顺便先说一下, pre-main阶段优化到什么范围内比较好呢,苹果给出的建议最好是400ms之内,但这个肯定要按照项目的实际情况有所取舍。

    1.1、排查无用的dylib(不确定的可以先删除,在编译下项目试试),减少dylib的数目

    1.2、检查 framework应当设为optional和required,如果该framework在当前App支持的所有iOS系统版本都存在,那么就设为required,否则就设为optional

    1.3、减少ObjC类(项目中不常用的库,废弃的代码等)、方法(selector)、分类(category)的数量、无用的库、非基本类型的C++静态全局变量(通常是类或结构体)

    1.4、压缩资源图片,删除无用的图片(IO操作)

    1.4、少在类的+load方法里做事情,尽量把这些事情推迟到+initiailize

    1.5、使用Swift structs(这是长期工作,可以考虑未来新页面用swift写)

    2. main()阶段的优化

    2.1、可使用instruments的Time Profiler先分析启动时哪些地方比较耗时,是否可以做优化

    2.2、梳理各个二方/三方库,找到可以延迟加载的库,做延迟加载处理,比如放到首页控制器或tabBar控制器的viewDidAppear方法里,并且保证只执行一次(按项目结构,放在合适的地方)

    2.3、梳理业务逻辑,把可以延迟执行的逻辑,做延迟执行处理。比如检查新版本、注册推送通知等逻辑。

    2.4、避免复杂/多余的计算

    2.5、每次用NSLog方式打印会隐式的创建一个Calendar,因此需要删减启动时各业务方打的log

    2.6、避免在用户看到的第一个界面(首页控制器或注册登录页面)的viewDidLoad和viewWillAppear做太多事情,这2个方法执行完,第一个页面才能显示,部分可以延迟创建的视图应做延迟创建/懒加载处理

    2.7、首页控制器或注册登录页面用纯代码方式来构建

    2.8、我们项目中每次启动会全量拉取AppServerConfig的配置,内容太多,未来需要api配合拆分,等页面使用的时候在拉取相应配置

    2.9、持久化数据的读取到内存中的时间也可以评估一下

    相关文章

      网友评论

          本文标题:iOS App 启动优化

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