九年之后,重新整理一下过去写过的文章

前言

距离上一次写博客已经过去 9 年了。回头看了一下最后几篇文章的时间,确实有点恍惚,时光荏苒这句话放在这里还挺合适。

这几年技术变化很快,尤其随着 AI 时代的来临,查资料、整理脉络、校对文字、补齐上下文的成本都低了不少。以前写一篇文章,很多精力会花在资料整理和表达打磨上;现在这些环节可以被工具分担一部分,反而更应该把项目里的问题、判断和思考沉淀下来。

所以接下来还是想把博客重新写起来,并且尽量不间断地继续更新。在继续写新的内容之前,先把过去几年写过的文章做一次总结和索引,也算是给这个博客重新接上线。

之前写文章的时候基本都是遇到一个问题、做了一个控件、踩了一个坑,然后顺手整理出来。时间长了以后,单篇文章之间其实是有脉络的:有些是 iOS 工程结构,有些是 Runtime 和内存管理,有些是 UI 交互和开源控件,还有一些是读书笔记、翻译和服务端相关的小实践。本文就把它们按主题重新整理一下,方便以后自己回头查,也方便刚好搜到某一篇的同学顺着同一类问题继续看下去。

整体回顾

目前博客里的旧文章主要集中在 2014 到 2017 年,一共 42 篇。现在回头看,这些文章当然带着很明显的时间痕迹:Objective-C、Masonry、CocoaPods、早期 Swift、Runtime、反编译,这些都是当时做 iOS 开发绕不开的话题。

不过很多问题并没有过时,只是换了技术栈和工具形态。比如代码怎么拆、接口怎么设计、复杂页面怎么优化、遇到奇怪问题怎么验证,这些到现在依然是工程里每天都会遇到的事情。

大致按年份看:

  • 2014 年,主要是刚开始写 Blog,以及一个 Android 开源控件。
  • 2015 年,文章最多,覆盖了 iOS 项目结构、Objective-C 基础、UITableView 性能、GCD、Auto Layout、Runtime、Swift 控件等。
  • 2016 年,更多是在总结工程化、模块化、代码组织、API 设计,也有一些更底层的内存管理和消息发送内容。
  • 2017 年,主要集中在 Runtime、反编译、Xcode Bug 分析,以及几个控件和工具库。

如果按阅读路线来分,则可以这样看:

  1. 想看 iOS 工程实践,可以先看项目结构、模块化、代码组织。
  2. 想看 Objective-C 底层,可以从 @autoreleasepool__autoreleasingobjc_msgSendmethodSignatureForSelector: 这几篇开始。
  3. 想看 UI 实现,可以看 Auto Layout 系列、UITextView 图文混排、几个 TTG 开源控件。
  4. 想查具体问题,就直接按下面的主题索引找。

工程结构、架构与协作

这一类文章主要讨论“代码应该怎么放、怎么拆、怎么协作”。很多观点放到现在不一定是唯一答案,但是问题本身一直存在:项目变大以后,如何让代码还能被理解、修改和复用。

Objective-C、Runtime 与内存管理

这一组文章是我自己回头看时比较有连续性的部分:一开始是内存和属性行为,后面慢慢过渡到 Runtime、消息转发、反编译和系统实现。

并发、性能与小技巧

这一类文章更偏“项目里马上能用到”的经验。现在很多技术栈已经变化了,但里面的一些判断方式仍然有参考意义,比如提前计算、缓存、减少重复创建、明确线程上下文等。

UI、布局与交互实现

这一组基本都是“先有一个效果,再拆解实现”的文章。相比纯理论,我自己更喜欢这种写法:先把画面、交互、约束关系摆出来,再一点点推到代码。

开源项目与控件实现

这些文章基本都围绕一个具体控件或工具展开:为什么做、最终效果是什么、API 怎么设计、关键实现点在哪里。现在看起来,有些库可能已经偏老了,不过当时做开源项目时对封装、文档、Demo 的训练还是很有价值。

读书笔记与翻译

这部分主要是阅读《Effective Objective-C》和技术文章后的整理。它们不算完整翻译,更像是把书里的点和自己的理解合在一起做记录。

服务端、跨端与其它

虽然博客大部分是 iOS,但也有几篇不是纯 iOS 的内容。

按年份索引

如果不按主题,而是按时间看,脉络会更明显一些。

2014

2015

2016

2017

总结

这次整理之后再看,过去这些文章其实大致围绕几个关键词:工程结构、Objective-C 底层、UI 实现、性能优化、开源封装

单篇文章写的时候往往只是解决一个具体问题,但放在一起看,就能看到当时学习和做项目的路径:先解决页面和业务问题,再关注代码组织和模块拆分,最后慢慢深入到 Runtime、内存管理和反编译验证。

隔了 9 年再重新开始写博客,感觉像是把一个很久没打开的项目重新拉起来。代码可以重新编译,文章也可以继续更新。AI 工具会让整理和表达的成本更低,但真正值得记录的,还是项目里遇到的问题、做判断时的取舍,以及过一段时间后依然能回头看的经验。

后面新的文章也会沿着这个索引继续补充。这样博客就不只是按时间堆在一起,而是能变成一份可以回头查、也可以顺着阅读的技术笔记了。