Lazy Blog

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

给iOS App瘦身

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

删除无用图片工具定制

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

批量改变图片尺寸

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

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...

Objective-c 枚举和字符串互相转换

Objective-c 中枚举和字符串转换时候很常见的一个应用场景 套路列举 switch case 大家都会写,就不占篇幅了 数组 //枚举定义 typedef NS_ENUM(NSUInteger, BPEPlaceHolderType) { BPEPlaceHolderType_None = 0,//没有占位图,保留老代码中的值,各业务线不...

iOS 马甲包制作指南

来由 公司有段时间想上马甲包,调研了一下,虽然最终没上,所以记录一下。 这是一个和苹果斗智斗勇的过程,当然从开发生态来看,这不是一件好事,不鼓励。 总结了一下,大体是这么个思路 技术层面 基本上参考 自动翻新专家(WHC_ConfuseSoftware) 就很完美了,可惜是闭源的。也有无私的同学贡献了一个开源的工具iOS 马甲应用工具,回想起我之前用Python 写过一个批量更改类...