Lazy Blog

「不想当厨子的司机不是好码农」

Mach-O浅析

Link Map File Link Map File 是Xcode产生可执行文件(Mach-O)的同时生成的链接信息,用来描述可执行文件的构造成分,包括代码段__TEXT 和数据段 __DATA的分布情况。 Mach-O 结构 __TEXT段节名含义 保存程序代码和字符 1 2 3 4 5 6 7 8 9 10 11 12 13 1. __text: 代码节,存放机器编译后的代码...

iOS运行时检测无用类

使用场景 检测无用类,可通过LinkMap结合Mach-O或者AppCode,都是通过静态检查无用代码,经常会有误判。 App迭代过程中,公司的产品往往有很多历史遗留不用的代码,代码还是有引用的,但是逻辑入口已经没有了。都可以通过这个方式检测出来。 缺点 当然这种方法也有缺点,必须对整个App的业务足够了解,检测之前,比如进过所有的页面才行,不然会有误报。 思路 思路来...

给iOS App瘦身

最近打算给App瘦身,做一个简单的步骤整理。 编译选项 待补充 资源瘦身 删除无用图片,已做自定义,介绍文章,看上篇 删除无用图片工具定制 删除重复图片,用 SameCodeFinder 这是用来找相似代码的,也可以用来找一样的图片。重复图片以图标居多,解决方案看下一条。别的重复图片背后都是往往是一个可以下沉的一个公用组件。 如果是纯色图标,用如下方案在iOS中使用ic...

删除无用图片工具定制

LSUnusedResources 是一个删除iOS工程中不用的图片的一个工具,用了好多次了,一直没有深入了解。这回再用,顺便看了一下它的源码,并且根据项目的要求,做了些改动,力求输出结果更加精准。 现有逻辑 我看文档写得挺简单的,补充些从源码得到的逻辑 所有的设置都会存在NSUserDefaults 里,下次打开还会是上次的设置 文件后缀对应正则设置,这个是一个字典,所以,...

批量改变图片尺寸

由来 昨天临时需求换icon,想想之前自己写过一个批量生产icon的脚本。但是不够灵活,无法面对项目中这些命名不会烦,不合理的的场景。于是我对这个脚本升了个级,在支持Python3的同时,支持根据配置文件内容读取配置,输出。妈妈再也不用担心我换icon写错名字了。 如何使用 首先得安一个Python3,其次得安一个pillow,Mac 上略微比较麻烦,命令如下 1 2 3 4 5 #...

Aspects源码阅读笔记

解读思路 先看完Aspects.h头文件 再看AspectInfo类,AspectIdentifier,AspectsContainer,AspectTracker 再按照hook的主流程,add remove 整体过了一遍,还是有点懵,不过比看这段代码之前强夺了。 源码 头文件,几乎每一句都有注释 // // Aspects.h // Aspects - A delig...

@synchronized 源码阅读笔记

特点 用着方便,可读性高(妈妈再也不用担心我忘记调用unclock 了) @synchronized block在被保护的代码上暗中添加了一个异常处理。为的是同步某对象时如果抛出异常,锁会被释放掉。 反正是我看到的、用的,第一个锁,在很久很久以前。 疑问 锁是怎么与你传入的 @synchronized的对象关联上的? 传入一个nil 会怎么样? @sync...

Git工作流规范整理

命名 分支命名规则 master:同步线上AppStore 代码。每次发版完毕,会往这里合。 develop:当前开发代码。 develop10.0.1:10.0.1为当前开发版本,可有可没有。(有人喜欢针对当前版本新建一个分支,建议发版以后merge入develop删除,留下tag即可)。 develop_damao:大毛的...

Git工作目录瘦身

iOS组件化系列 《使用Cocoapods创建私有podspec》 《使用Cocoapods 踩过的坑》 《定时取源码执行pod lib lint校验》 《cocoapods依赖关系导出》 《iOS 组件二进制》 《Git工作目录瘦身》 由来 cocoapods在组件化过程中,有的团队会把Pods上传,有的不会。我认为在壳工程中,Pods纳入版本管理是有必要...

YYKit源码阅读

源码阅读系列 YYKit 宏定义 YYSYNTH_DUMMY_CLASS /** Add this macro before each category implementation, so we don't have to use -all_load or -force_load to load object files from static libraries that on...