
过去的 2025 年,AI 的发展真是让人惊叹。难以想象 Deepseek R1 是在 2025 的春节发布的。
这一年里,我陆陆续续尝试了不少的 AI 编程工具,在 AI 的协助下写了一系列脚本、应用等,并在工作流中深度融入 AI。
AI Coding,特别是 Vibe Coding,其所带来的实时反馈简直让人上瘾。我,以及一些网友都有通宵 AI Coding 的经历。
在相对高强度的 AI Coding 过程中,我发现人类真是个糟糕的输出端,手+键盘的输入速度严重制约了 Coding 的速度,大大减弱了即时反馈,严重影响编码体验。
语音输入则可以为我带来更快的输入速度。我尝试了 Mac OS 自带的语音输入,只可惜它输入体验简直令人罄竹难书——中文识别率一般,如果想要中英混杂在一起,则几乎无法正确识别,纠错成本甚至高于我们使用键盘输入。
在使用某包过程中,发现它的语音识别正确率实在感人。相比于 Apple 聊胜于无的语音识别效果,它的效果可称得上惊艳。能够精准识别中文以及中英文混合的场景。
这不就是我们想要的吗?把语音识别和天生 AI Native 的 Markdown 格式结合到一块。解决我们在 AI Coding 中最前置的痛点。
于是有了 Typin。
在Swift中,一个Protocol能够通过extension为特定的类型提供method, initializer, subscript, computed property的默认实现。这着实是一个很好的特性。那么在Objective-C中是否能够实现类似的效果?答案是肯定的。有若干个库都提供了自己的实现,因为大同小异,这边稍微讲一下libextobj库中的EXTConcreteProtocol的实现。

不出意外的话,2018就要过去,迎来崭新的2019。即将过去的2018,虽然同2008仿佛只有一日之隔,相约98也依旧回荡在耳边,但它就是这么来了又要走了。
这一年几乎是连轴转,经历了不少事也见识了很多社会的美好和黑暗。还好,在2018年的尾巴,有了个不错的收尾和开始。
所有项目在一定阶段都会遇到组件化的问题。特别是在代码量越来越大、模块越来越多的情况下,都需要一定的机制去简化页面间跳转的流程,并通过这个机制实现不同模块之间一定程度的解耦。在我看来,我需要一个有如下特点的方案:
- 能够聚合为不同模块,以方便管理;
- 也能有灵活性允许分散至不同地方;
- 能够安全、方便地调用,不至于误写导致排查困难;
- 能够像方法一样定义、实现;
- 能够检测重复定义;
- 对编辑器友好,有代码补全、能使用注释;
- 特殊情况允许单独处理;
- 允许重定向;
- 增加起来直观;
- 私有和公共的简单权限控制;
- 缓存机制;
- 错误处理;
- 链式调用;
- 等等
要求还挺多……那还是自己造个轮子吧。于是催生了这个方案:AOPRouter。简单的说,它是一个基于URL形式的、利用了Objective-C Runtime特性的路由方案。

原本是没有计划去北京书市的——一周前偶然在豆瓣上看到这个活动,被底下的评论拔了草。早上醒来阳光甚好,不想负了这明媚春光,琢磨着该去哪儿走走,突然就想起了这个活动。今天大概是今年这活动最后一天去的机会吧,那么就出去走走吧。写了几行代码,吃罢午饭便动身,目的地朝阳公园。