Swift 无用代码查找
现在已经进入AI时代了,还有人在坚持iOS开发吗?技术群里最近越来越多的兄弟们反馈,行业本来就不好干,现在还要被AI抢饭碗,怎么搞?
我的答案是:拥抱AI,因为它确实能提高生产力!以前可能因为一个api要查半天,现在你问一下AI,直接帮你把简单的功能给实现了!一个字,真香!在编码大模型方面,克劳德真的无人能敌!牛X
有人会问,作为一名iOSer,我们该怎么去拥抱AI呢?就我个人来讲,目前用的最多的就是CopilotForXcode这个库,我觉得广大的iOSer可以尽快用起来!别说自动写代码,个人认为提效是很明显的。
其实Trae国际版的克劳德3.7也挺香,可以去用一下,比某da强的不是一星半点儿,不差钱的大佬直接用Cursor吧!
包大小优化是日常工作中(面试)经常会碰到的场景(技多不压身),那么包大小优化都有哪些方法呢?
一般我们会从资源和代码两个层面下手,比如常见的方式有:无用代码清理、无用资源清理,今天我们主要讲Swift项目的无用代码清理。
一、目前主流的Swift无用代码查找方案有以下几种(AI给出的答案):
1、使用SwiftLint工具
2、使用Periphery
3、使用unused脚本(纯文本搜索代码,简单易懂,好上手)
二、如何使用 unused 脚本:(脚本文件地址位于文章底部【参考1】)
将Ruby脚本unused.rb放到主工程目录下,直接在终端执行以下指令:
1 | ruby unused.rb |
执行完成以后,你会发现终端会直接输出项目中未使用到的变量、协议、函数、类、结构体等信息,是不是很方便?
拿到了这些无用类的文件path,我们就可以直接写个shell脚本来直接删除无用类、结构体、协议。当然这里还要考虑项目中类和文件名不一致的情况,所以其实平时规范一点,一个文件一个class,这样就比较好删除了!
另外,它还可以嵌入到Xcode中,把以下代码片段放到Xcode项目对应的Target中的 Build Phases:
1 | unused_file="unused.rb" |
脚本嵌入完成后,直接运行项目,运行完成后,Xcode直接会出现未使用的代码警告提示,方便队友在日常编码的时候就能把自己相关的无用代码给删除掉。
注意:
上述脚本是纯正则匹配的文本搜索,里面可能存在误报的情况,尤其是依赖关系很复杂的情况下,漏报的也比较多,所以正常情况下还是需要开发人员进行二次确认。
除此之外,我们还可以自己编写脚本(可以让AI生成),上面提到的获取class、struct、protocol的文件path,一键删除无用代码。
关于包大小优化这一块,最近网上又有大佬开源了一个工具 APPAnalyze ,我在这里推荐一下(详见参考2),主要是学习一下人家的思路。
三、结语:
关于包大小优化,你需要掌握的关键技术点有:
Xcode构建(不同参数的设置)、LLVM编译原理(插桩查找无用代码)、cocoapods包管理(二进制化加载)、图片压缩(有损/无损)、持续集成卡口设置防裂化。
看完之后,你是不是感觉头都麻了,还有这么多东西要学?那么我建议你先挑软柿子捏:
1、从资源文件下手,因为经过数据对比,从资源文件下手收益是最大的。
2、从代码层面下手,分析LinkMap文件,可以让我们了解类、模块及三方库的代码的占用空间大小,帮助我们快速定位要优化的类或者静态库。
四、参考:
更多好文推荐,欢迎关注 《iOS开发秘籍》 公众号,获取最新的内容
本文内容中部分来自网络,后续会持续更新完善。欢迎一起学习交流!
如需转载,请注明出处