美文网首页
iOS App优化

iOS App优化

作者: canlanrensheng | 来源:发表于2019-08-27 13:26 被阅读0次

    App开发完成之后,优化成为了不可缺少的一环。优化的部分小编从接下来几个方面着手:

    一、App启动优化

    二、内存优化

    三、UI优化

    四、App瘦身

    五、架构优化

    六、App安全优化

    1、App启动优化

    App启动速度是app体验的第一感受,如果一个 app启动时间需要漫长的等待过程,对于富有耐心的我来说直接对这个app长按delete了,再长点,直接被kill了.

    APP的启动可以分为两个阶段,即main()执行之前和main()执行之后。

    总结如下:

    t(App 总启动时间) = t1( main()之前的加载时间 ) + t2( main()之后的加载时间 )。

    t1 = 系统的 dylib (动态链接库)和 App 可执行文件的加载时间;

    t2 =  main()函数执行之后到AppDelegate类中的applicationDidFinishLaunching:withOptions:方法执行结束前这段时间。

    App启动之前主要是加载.o可执行文件,加载动态链接库(系统的动态库,runtime的动态加载的方法,自己添加的framework)操作。所以可以进行如下操作进行优化:

    1.1 main函数之前的优化?

    1、减少不必要的framework,特别是第三方的,因为动态链接比较耗时

    2、合并或者删减一些ObjC类(class)、方法(selector)、分类(category)的数量

    3、删减一些无用的静态变量

    4、删减没有被调用到或者已经废弃的方法

    5、将不必须在+load方法中做的事情延迟到+initialize中

    1.2  main函数之后的优化?

    1、梳理各个二方/三方库,找到可以延迟加载的库,做延迟加载处理,比如放到首页控制器的viewDidAppear方法里。

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

    3、避免复杂/多余的计算。

    4、采用性能更好的API。

    5、启动阶段的网络请求,是否都放到异步请求;

    6、避免在首页控制器的viewDidLoad和viewWillAppear做太多事情,这2个方法执行完,首页控制器才能显示,部分可以延迟创建的视图应做延迟创建/懒加载处理。

    7、首页控制器用纯代码方式来构建,减少xib的使用。

    2、内存优化

    1、减少内存泄漏

    方法:

    1.1 通过dealloc方法查找

    1.2 使用Instrument工具库里的Leaks

    1.3 使用MLeaksFinder

    2、降低内存峰值

    1.lazy load, 懒加载

    2.灵活运用图片和文件加载

    3.xib加载会把所有的控件都加载到内存中,所以减少xib的使用。

    3、代码的优化

    1、比如通过WKWebView取代UIWebView

    2、减少不必要控件的使用

    3、UITableViewCell和UICollectionView善用reuseIdentifier

    4、根据需要按需加载视图,按需加载。

    3、UI优化

    拿UITableView来说吧

    3.1、cell高度在网络请求中完成,并缓存到model中

    2、cell中显示的数据,最好在网络请求中完成,避免在 cell赋值的时候再加工

    3、cell复用reuseIdentifier

    4、layer切圆角会触发离屏渲染,改成CAShapeLayer和UIBezierPath画圆角(设置圆角,设置shadows)

    5、减少cell的层级,尽可能减少不必要的控件的使用

    6、控件不要透明

    7、异步绘制

    8.使用FaceBook的AsyncDisplayKit来写复杂的界面,能够获得异步绘制,预先加载等诸多好处。

    3.2 尽量使用WKWebView来替代WebView的使用

    3.3 减少不必要控件的使用

    3.4 根据需要按需加载视图,按需加载

    可产考:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

    4、App瘦身

    App瘦身是想办法减少ipa的大小。

    1、使用LSUnusedResources查找没用的图片并删除

    2、图片无损压缩(WebP图片压缩)

          2.1 Webp 压缩率⾼,⽀持有损与⽆损压缩

          2.2 WebP 体积⼤幅减少,⾁眼看不出差异 

    3、使用字体库取代图片

    4、代码瘦身

          4.1、AppCode代码静态检查

         4.2、清理无用的代码(Class,Method,Import)

    5、删掉一些没用的三方库

    6、使用替代方案取代三方库

    5、架构优化

    常用的架构有MVC 、MVP、MVVM、VIPER

    用腻了令人酸爽的MVC ,选择更换MVVM

    没有绝对说哪个框架好哪个框架不好,根据项目大小和项目的需要选择适合自己的框架才是最好的。

    本人比较喜欢MVVM + RAC+Router框架。

    6、App安全优化

    苹果爸爸对数据安全做的努力大家都有目共睹的,上架到Appstore的ipa是是加过壳的,不好反编译,主要是针对越狱的手机ipa静态分析那就凉凉了。感兴趣的看下网上资料怎么反编译的。个人觉得要搞你app会从网络对你的数据进行攻击,或者拿到相应的ipa对你进行反编译。我觉得做到以下几点,想搞你他都觉得浪费时间,还不如多搞几个没做安全处理的app。

    1、使用https取代http

    关于http的缺点和https的使用可参考网上的资料,或者看下我的这篇文章。

    https://www.jianshu.com/writer#/notebooks/14225123/notes/53160589

    2、接口加密处理

    3、关键数据(三方的key啥的)通过接口获取

    4、敏感信息(NSUserdefault,Sqlite)加密存储

    参考:https://www.jianshu.com/p/561fec0caa01

    相关文章

      网友评论

          本文标题:iOS App优化

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