4.1 好的遗产:命名即文档
OC 最被人诟病的地方,也是它最伟大的地方,就是它的 冗长。
在 C 语言里,你可能会看到 strcpm 这种 cryptic 的函数名。
但在 OC 里,你會看到:
stringByReplacingOccurrencesOfString:withString:options:range:
“太长了!”新手惊呼。 “太清晰了!”老手感叹。
Objective-C 这种如同写文章一样的命名风格(Verbose),直接影响了 Cocoa 框架的设计哲学,也深深地刻在了 Swift 的基因里(虽然 Swift 稍微剪短了一点,但 Argument Label 的精髓依然保留了)。 它教会了我们:代码是写给人看的,偶尔顺便给机器运行一下。
4.2 坏的遗产:头文件地狱
OC 继承了 C 的 .h 和 .m 分离的传统。
这意味着你改了一个方法的签名,你得在两个地方修改。
这意味着编译器在编译你的项目时,需要把成千上万个头文件复制粘贴几十万次。
这也是为什么 OC 的编译速度(尤其是以前)那么慢的原因之一。
Swift 终于消灭了头文件,这是 OC 送给我们的最后一份礼物:作为一个反面教材,告诉我们 Module 是多么重要。
4.3 永远的方括号
虽然我们正在逐渐告别 OC,但当你偶然打开一个底层的 C++ 库,或者深入 Runtime 的源码时,你依然会感受到那种力量。 Objective-C 证明了:动态运行时(Runtime)不仅是可行的,而且是强大的。
它让我们明白,并在移动设备如此受限的资源下,依然可以拥有 Smalltalk 般灵动的架构。 这一章结束了历史的回顾。下一部分,我们将深入代码,去解剖那对方括号背后的秘密。