探究一下我们计算app储存空间的大小时和系统设置里的差距
App自身大小差距
系统设置里App的存储空间分为:“App大小”和“文稿与数据”。
之前介绍了一下 iOS中的编译过程 iOS编译过程 。 现在来对整体编译时间做一个优化。
xcode完整的build详细的步骤如下:
主要介绍一下 https://github.com/sunyanyan/ipaAnalyze 里的脚本。
该脚本输入ipa文件以及对应linkmap文件,输入该ipa各类资源的大小、以及各个模块的大小。
iOS应用的启动可分为pre-main阶段和main()阶段,pre-main阶段为main函数执行之前所做的操作,main阶段为main函数到首页展示阶段。其中系统做的事情为:
iOS 原生代码的编译调试,都是通过一遍又一遍地编译重启 APP来进行的。所以项目代码量越大,编译时间就越长。虽然我们可以将部分代码先编译成二进制集成到工程里,来避免每次都全量编译来加快编译速度,但即使这样,每次编译都还是需要重启App,需要再走一遍调试流程。
幸运的是,John Holdsworth 开发了一个叫做 InjectionIII 的工具可以动态地将 Swift 或 Objective-C 的代码在已运行的程序中执行,以加快调试速度,同时保证程序不用重启。
在iOS中苹果提供了NSURLConnection、NSURLSession等优秀的网路接口供我们来调用,开源社区也有很多的开源库,如之前的ASIHttpRequest 现在的AFNetworking和Alamofire,我们接下来介绍的NSURLProtocol,都可以监控到这些开源库的网络请求。
NSURLProtocol是iOS网络加载系统中很强的一部分,它其实是一个抽象类,我们可以通过继承子类化来拦截APP中的网络请求。
举几个例子:
等等,都可以用到 NSURLProtocol是一个抽象类,我们需要子类化才能实现网络请求拦截。