如何使用 Clang Plugin 找到项目中的无用代码(Part 1)
前言
最近组里的项目遇到了一个瓶颈问题:代码段超标,简单的说,就是编译后输出的可执行文件太大了,来看看 官方文档 中的相关规定:
For iOS and tvOS apps, check that your app size fits within the App Store requirements.
Your app’s total uncompressed size must be less than 4GB. Each Mach-O executable file (for example, app_name.app/app_name) must not exceed these limits:
For apps whose MinimumOSVersion is less than 7.0: maximum of 80 MB for the total of all __TEXT sections in the binary.
For apps whose MinimumOSVersion is 7.x through 8.x: maximum of 60 MB per slice for the __TEXT section of each architecture slice in the binary.
For apps whose MinimumOSVersion is 9.0 or greater: maximum of 500 MB for the total of all __TEXT sections in the binary.
可以看到,iOS 9+ 支持 500MB 的代码段体积,而 iOS 8.x 只支持 60MB。面对不断增加的业务代码,我们需要一个手段,来及时删除已经废弃的代码,以减小代码段体积。
在尝试分析 LinkMap 文件无果之后,我找到了另外一个路线,那就是分析 Clang AST,在静态分析时从语法树中,找到未被显示调用到的方法。尽管由于 oc 的动态特性,即便静态阶段其未被显示调用,它依然可能在动态期间被调用,但不论如何,我们都可以通过分析 AST 来得到未被静态调用的方法,对它们进行校对、确认。
「番外篇之一」初探网络协议
利用 Node.js 搭建一个简单聊天室
前言
终于写下第三篇啦!本篇将利用 Node.js 实现中转服务器,在 iOS 上实现一个简单的聊天室。
本文是 iOS 程序员的 JavaScript 之旅 系列的第三篇,这个系列主要用于记录我在学习 JavaScript 中的一点心得,文中内容由于参考文献版本不一定是最新 & 个人理解水平有限,可能出现一些错误,还请谅解。如果有任何讨论 / 建议 / 意见,欢迎评论留言或是邮件联系。
如何理解 iOS 的签名证书机制
从接触 iOS 开发的第一天起,就被 Xcode 的证书、签名的一堆验证流程弄得晕头转向。从一开始的弹窗 Fix issue,到 Xcode 8 之后出现了 Automatically manage signing,苹果正努力让整个签名的过程变得简单透明。但这个机制出现的原因、背后的机理是什么呢?本文将记录我就这一问题的学习心得。
iOS 程序员如何理解 JS 中的类与继承
前言
新年第一篇,没想到到一月下半旬才有空写,实在是忙啊。
本文是 iOS 程序员的 JavaScript 之旅 系列的第二篇,这个系列主要用于记录我在学习 JavaScript 中的一点心得,文中内容由于参考文献版本不一定是最新 & 个人理解水平有限,可能出现一些错误,还请谅解。如果有任何讨论 / 建议 / 意见,欢迎评论留言或是邮件联系。
慎用 awakeFromNib 进行初始化
尽管使用 Storyboard / XIB 来构建应用界面的做法饱受批判,但不得不承认,一个可视化的界面,其在易读性、创建原型的速度、对于新手的友好度等等方面的优势还是非常明显的。我也是一名 Storyboard / XIB 的重度用户,尽管我知道 Autolayout 布局效率很低,也见过极其复杂的 XIB ,删一个约束就满屏的红色,但在版本快速迭代中、界面随时要调整的情况下,我还是更偏爱可视化布局控件(更别提有时候看别人的代码,其命名与对应控件天差地别的情况了)。正好今天遇到一个相关的问题,因此写文章来记录一下。
iOS 程序员如何理解 JS 中的 this
前言
本文是 iOS 程序员的 JavaScript 之旅 系列的第一篇,这个系列主要用于记录我在学习 JavaScript 中的一点心得,文中内容由于参考文献版本不一定是最新 & 个人理解水平有限,可能出现一些错误,还请谅解。如果有任何讨论 / 建议 / 意见,欢迎评论留言或是邮件联系。
基础知识
如果你是完完全全的 JavaScript 小白,那么我建议你先对 JavaScript 的语法进行学习,你可以参考 MDN 上的基础教程,或是阅读其他的书籍进行学习,而我正在阅读的是 《 JavaScript 编程全解 》 ;如果你和我一样,以一个 iOS 程序员的角度初学 JavaScript ,并且对 JavaScript 中的 this 感到疑惑的话,那么这篇文章或许会对你有帮助。