一直以来,由于iPhone的最便宜版本的闪存空间很小,而稍微贵一点的版本闪存空间正好够用,但是大家都不想多花钱,想省点钱,因为16G便宜版本要比64G版本便宜一千多,但是苹果还不出32G版本,因为他们的营销策略,如果提到iPhone4时代最小的8G,但是那时候的APP每个包占得空间也不大,但是现在不一样了,有一些APP安装包就很大,尤其是我在使用iPhone 6S的16G版本的时候可用空间不过10G,安装不到30个APP就没空间了,着实让人闹心,有时候想要摔了了的冲动,今天就从开发者角度说说,如果减少上线包的体积,让用户下载以及安装的时候更开心(更顺畅),为用户节省闪存空间,看下图
以上图片中的方法分三类去优化,
1.资源文件优化:资源优化的效果最明显,因为主要占APP空间的就是资源文件,优化资源文件甚至能使包体积减少过半的占用空间。
2.编译优化:第一,去除debug符号,意思是在debug下可以打印那些log以及输出信息,如果是release模式,就要跳过这些执行,第二,避免编译多个架构,我的使用经历是把当前使用的第三方framework库,使用命令行工具,减少编译i386,x64,的编译,意思是,去除对于PC端的编译文件,保留ARMV7,ARMV7S的编译对于手机系统使用的文件等
3.可执行文件优化:第一,去除无用代码固然很重要,有点既能优化代码逻辑,重构逻辑,可读性等都增强了。第二,有一些第三方库引入之后并没有使用,不适用的要去掉避免编译进入可执行文件占空间。第三减少冗余字符串可使用网络请求返回的消息内容去优化。第四,ARC模式变为MRC模式在当前ios开发已经不现实了,虽然ARC自动引用计数不用管理对象的持有以及释放,但是系统给你增加的自动持有,自动释放反而加入了更多的判断及方法去实现,如果做不到很好的管理MRC,还是建议继续使用ARC,毕竟这部分的优化占比不大。
最后,如果本文章对你有帮助,希望点赞,评论666
本人github开源库地址:https://github.com/lishiping,希望对广大iOS开发者有帮助
Cocoapod公开库:
1.SafeData---使用array,dictionary类别,主要是保护数组防止插入空数组,防止数组越界,在开发中非常实用,字典的类别也非常实用,可以直接得到转换后的类型SafeData
2.SPDebugBar ---A tool to help developers and testers quickly switch the server address, convenient to debug the program.一个小工具帮助开发人员和测试人员快速切换服务器地址,方便调试程序,可以在debug模式下或者测试包上方便切换地址SPDebugBar
3.SPFastPush---Use Macro Fast NavigationController push next VC,and Fast Pop anther VC.使用宏帮助导航控制器快速push下一个Viewcontroller,并使用KVC快速给下一个VC赋值,也可以使用宏定义快速返回上一层VC或者指定的VCSPFastPush
4.SPMacro---一些foundation层的一些宏定义,打印宏定义,类型判断,通知使用,线程使用等,和一些UIKit层的宏定义,屏幕方面的宏定义,颜色方面的宏定义,图片宏定义SPMacro
5.SPWebView---SPWebView是一个基于OC代码实现的WebView轻量级组件,将UIWebView和WKWebView的API封装成统一的类去使用,并且在加载网页的时候提供进度条,同时简化JS与OC互相调用及传递数据的方式。仿微信界面SPWebView
6.SPCategory---SPWebView是一个常用类别库,size,字符串,hud等SPCategory
7SPBaseClass---SPBaseClass是一些架构上的基类,方便开发者加入项目,优化了系统自带偏移量的方法,避免偏移量出问题,优化了控制手势,优化了tabbarConroller控制方法等,不断更新中 SPBaseClass