2.1 逆袭:NeXT 吞并 Apple
1996年,Apple 即使快要倒闭了。他们的操作系统 Mac OS 9 就像一座摇摇欲坠的危楼,那是还是以 Pascal 风格为基础的 Toolbox 年代。他们试图开发下一代操作系统 Copland,但失败得一塌糊涂。
走投无路的 Apple 看向了外界。他们有两个选择:BeOS 和 NeXTSTEP。 最终,他们选择了 NeXT。乔布斯带着他的 Objective-C 军火库,回到了库比蒂诺。 虽说是 Apple 收购了 NeXT,但正如乔布斯后来所做的那样,怎么看都像是 NeXT 的文化吞噬了旧 Apple。
2.2 Cocoa 与 Carbon 的战争
回到 Apple 后,乔布斯面临一个巨大的问题:怎么让现有的开发者迁移到这个满是方括号的新世界? 当时的 Mac开发者习惯了 C++ 和 Pascal 风格的 API。让他们去学这门看起来像天书一样的 Objective-C?没门。
于是 Apple 搞出了两条路:
- Carbon:旧世界的桥梁。你几乎不用改太多代码就能让你的老程序跑在 Mac OS X 上。
- Cocoa:新世界的船票。纯正的 NeXTSTEP 血统,纯正的 Objective-C。
这场战争持续了几年,但胜负早已注定。Cocoa 的开发效率是 Carbon 无法比拟的。 那些坚持用 Carbon 的开发者发现,隔壁用 Cocoa 的家伙,一边喝着咖啡,一边用几行代码就实现了一个带有漂亮动画的抽屉效果窗口,而自己还在和事件循环(Event Loop)搏斗。
最终,Objective-C 赢了。方括号插满了 Mac OS X 的每一个角落。
2.3 2008:寒武纪大爆发
如果说 Mac 只是让 OC 站稳了脚跟,那么 iPhone 则让 OC 统治了世界。
2007年,初代 iPhone 发布。那时只有 Web App。黑客们通过越狱证明了这台设备能运行原生代码。 2008年,Jobs 终于妥协(或者说是顺水推舟),发布了 iPhone SDK。
这一刻,Objective-C 的命运齿轮开始疯狂转动。 全世界的开发者蜂拥而至。不管你之前是写 Java 的、写 C# 的、还是写 PHP 的,要想在那个闪闪发光的 App Store 里淘金,你就必须学会 Objective-C。
- 你必须学会什么叫
[alloc init]。 - 你必须学会为什么字符串前面要加个
@。 - 你必须学会对着屏幕骂:“这该死的 EXC_BAD_ACCESS 是什么鬼?!”
成千上万的 App 像雨后春笋一样冒出来。愤怒的小鸟、水果忍者、Instagram…… Objective-C 成了当时世界上薪水最高的语言之一。也就是在这个时候,无数中国开发者通过名为《Objective-C 2.0 程序设计》(那是红皮书吗?还是黄皮书?)的武林秘籍,踏入了 iOS 开发的大门。
那是一个疯狂的、充满梦想的、满屏幕都是方括号的黄金时代。