地铁时间一直使用iBooks看电子书,不认识的单词太多,也就很喜欢使用iBooks自带的长按单词点击Look Up(查询)按钮来查单词。又由于习惯了左手拿手机,右手扶地铁把手……查完单词后,关闭按钮在右上角。这篇文章就简单讲下怎么在左下角加上个“Done”按钮。如下图:
于是我查单词更勤快了。
...
mmap是性能优化的必备神器,这篇文章简单罗列下相关信息。
...
逆向工程可以让我们对系统的原理理解的更深刻,也可以让我们去窥视感兴趣的App,很好玩,也可能很邪恶。
目前(2018年8月30日)普通人能接触到的最新的可越狱的iOS版本是iOS11.3.1,可以在 https://canijailbreak.com/ 上看到,这篇文章就简单讲下iOS11.3.1的越狱步骤,为未来我们以性能优化为目的的逆向工作做铺垫。
...
一个“有年头”的App,启动中要做的工作不断的累加,didFinishLaunchingWithOptions中的代码越来越长,AppDelegate.m文件的行数也越来越多。那么是时候分类存放了。
...
本文仅供学习参考,但介绍的方法性能不好。推荐使用 https://github.com/huakucha/TTAnalyzeLoadTime ,这个性能会更好。
大概两年前刚开始做性能优化工作,为了Hook所有+load方法,是用Hopper先列出所有+load,然后使用CaptainHook在动态库中逐个指定类名来Hook每一个+load方法。写了一篇文章,先后发表到了内网(ATA)和博客,博客文章地址是: https://everettjf.github.io/2017/01/06/a-method-of-hook-objective-c-load/ 。
这个方法有两个缺点:
需要先静态分析(使用Hopper)来看到所有+load方法,或者使用objc runtime的方法获取所有包含+load方法的类名。很麻烦。
对Category中的+load方法,没有办法Hook。
当时也意识到了这两个缺点,但迫于时间也凑合够用了。
时隔两年,想来了结这个心愿。这篇文章就把这两个缺点弥补上,实现:Hook所有的+load方法,包括Category中实现的+load方法。
...