过去一段时间的iOS启动优化文章目录

过去两年多的时间里,我写了一些iOS应用启动性能优化的文章,这篇文章整理个简单的目录。 ...
性能优化

Code Friend:使用JavaScript开发Xcode Extensions

Code Friend 是一款Xcode Extension,提供了JavaScript的接口,用户可基于这个App简单快捷开发出Xcode插件工具。 官方地址:https://qvcodefriend.github.io/ Mac App Store 地址:https://itunes.apple.com/cn/app/code-friend/id1441249580 ...
工具

线程标识获取方法

性能优化的开发中经常需要获取线程标识,这篇文章简单罗列和对比了四种获取线程标识的方法。 ...
性能优化

使用AppleTrace探索SpringBoard

前段时间的《初步探索LaunchScreen》使用IDA和lldb探索了下部分SpringBoard。这篇文章再用AppleTrace初步探索下SpringBoard。AppleTrace 目前使用了HookZz来inline hook objc_msgSend。可用于分析每个Objective C的方法耗时,和调用关系。 ...
工具

USB Keyboard 通过macOS给iOS打字的输入法应用

USB Keyboard 原名 QVKeyboard,改名或许是为了更容易记录和搜索 USB Keyboard 是一个输入法应用,通过USB连接iPhone到Mac后,可以实现在Mac端打字,iPhone上输入。 ...
产品

MMKV中的简单LRU缓存(LRUCache)

LRU(Least recently used)是一种缓存更新策略,即当缓存数目达到最大容量、或者某个条件时,移除掉最近最少使用的元素。微信前不久开源了一个客户端Key-Value存储库MMKV https://github.com/Tencent/MMKV ,其中实现了这样一个十分精简的LRU缓存(LRUCache类)。 ...
性能优化

初步探索LaunchScreen

tl;dr 点击App图标后,iOS系统的桌面SpringBoard会先创建LaunchScreen,然后创建App对应的进程。那么可以这样认为:LaunchScreen的加载是不占用App进程自身感知到的启动时间的。LaunchScreen是SpringBoard为了用户体验,提前在进程启动之前展示给用户看的。 当然严格来说,LaunchScreen的加载占用了系统的CPU等资源,也会对App的启动时间有一定的影响。 ...
逆向工程

FastImageCache 原理

FastImageCache 是一个使用空间换时间的加速图片加载/渲染的库。官方(https://github.com/path/FastImageCache)的README比较详细的解释了原理。这篇文章就结合源码再次温习一遍最核心的部分。 ...
性能优化

iOS中的多进程,下拉关闭系统的词典界面

iOS中的App也存在多进程架构,而且是从iOS6就开始了,只是苹果一直自己在用。 需求来源 iBooksLookUpCloser 发布到bigboss后的第二天,一位老外朋友就发来邮件,让我看看这个一个月前reddit的提问 https://www.reddit.com/r/jailbreak/comments/95vjgd/request_please_some_one_fulfill_this_request_pull/?st=JLMLKHHM&sh=093359ff 。 关于iBooksLookUpCloser参考上篇文章 https://everettjf.github.io/2018/09/03/ibooks-dictionary-close-tweak/ 。 ...
逆向工程

iBooks 查单词界面增加关闭按钮

地铁时间一直使用iBooks看电子书,不认识的单词太多,也就很喜欢使用iBooks自带的长按单词点击Look Up(查询)按钮来查单词。又由于习惯了左手拿手机,右手扶地铁把手……查完单词后,关闭按钮在右上角。这篇文章就简单讲下怎么在左下角加上个“Done”按钮。如下图: 于是我查单词更勤快了。 ...
逆向