xcode 6,那个把 Swift 带到我们面前的老伙计

admin

前几天整理旧硬盘,我翻到一个早就打不开的安装包,文件名里赫然写着“Xcode 6”,那一瞬间,我脑子里冒出来的不是版本号,也不是什么技术参数,而是 2014 年秋天办公室里那股混合着咖啡味和键盘声的味道,对很多 iOS Xcode 6 不是一个“最稳定、最好用”的版本,但它绝对是一个绕不开的节点,它像一扇门,门后面站着一个当时还很青涩、却让所有人兴奋的新朋友——Swift。

我第一次认真用 Xcode 6,是在一个加班的晚上,那时我还在做外包,手头是一台 2012 款的 MacBook Air,风扇一转起来像小飞机,项目不算大,客户催得紧,但我还是忍不住点开了刚下载好的 Xcode 6,新建了一个 Playground,说实话,刚开始我并没有抱太大期待,毕竟那几年大家已经被各种“新工具”教育得很谨慎了,可当我在左边敲下几行 Swift 代码,右边几乎立刻显示出结果时,我还是愣了一下,那种感觉很奇怪,像是你原本习惯了写完代码、编译、运行、看控制台,突然有人告诉你:你可以边写边看,像在草稿纸上算数一样,对老手来说这可能只是效率工具,但对当时刚学 iOS 它确实降低了对“写代码”这件事的恐惧感。

Xcode 6 绝不是什么完美的白月光,我的同事老周就差点被它折腾到崩溃,老周负责维护一个从 Objective-C 时代一路传下来的老项目,里面第三方库不少,Storyboard 也堆得很厚,客户催着发版,他想着顺手升级到 Xcode 6,结果一打开项目,警告先来了一排,接着是各种编译错误,那天晚上我们俩蹲在会议室里,一边查 Build Settings,一边清理 Derived Data,还反复确认架构设置,最后问题虽然解决了,但老周留下一句特别经典的话:“新项目可以尝鲜,老项目别乱动,吃饭的家伙得稳。”后来我们团队真就形成了一个不成文的规矩:主力老项目先锁版本,新项目小范围试 Swift,谁也别拿客户的上线时间给新工具当试验田。

还有一个生活实例,是我给本地一家小店做展示类 App,那会儿 iPhone 6 和 iPhone 6 Plus 刚出来,屏幕尺寸一变,以前那种靠绝对坐标摆控件的做法立刻露馅,Xcode 6 里的 Size Classes 和 Auto Layout 成了绕不过去的东西,刚开始我被约束搞得头大,明明在一种尺寸下看着好好的,换到另一种就错位,客户不懂技术,只会问:“为什么在我手机上按钮跑上面去了?”我只能一边陪笑,一边回去改约束,但折腾完之后,我不得不承认,这套东西虽然学习曲线不友好,却逼着我们从“照着稿子摆位置”转向“描述布局关系”,这个思维方式后来一直影响我,直到今天做适配、做响应式界面,底层逻辑都还在。

如果让我发表个人观点,我会说:Xcode 6 最大的意义,不是它有多稳定,而是它把“新语言、新交互、新工作流”同时推到了开发者面前,Swift 1.0 当年并不成熟,语法变来变去,混编也有一堆坑,Playground 偶尔还会卡住,Interface Builder 也不是省油的灯,但正是这些不完美,让很多人第一次认真思考:我是不是可以换一种方式写代码?我是不是可以让反馈来得更快?我是不是应该把老项目的稳定和新项目的好奇心分开管理?这比单纯记住某个版本号有价值得多。

今天回看 Xcode 6,我不会神化它,也不会用现在成熟工具的标准去嘲笑它,它更像一个时代切片:Swift 刚刚起步,iOS 8 带来一堆新能力,开发者一边骂骂咧咧,一边又忍不住点开新功能,工具终究会过时,安装包也会打不开,但那种“先建个 Playground 试一下”的习惯,那种在稳定和尝鲜之间找平衡的判断,其实一直留了下来,我的个人观点很明确:新工具值得试,但别拿生产项目赌气;老技术值得尊重,但也别因为怕麻烦就拒绝看一眼新世界,Xcode 6 教会我的,大概就是这件事。

你第一次打开 Xcode 6 是为了什么?是为了 Swift,还是为了适配当年的 iPhone 6?又或者,你也有一段被 Build Settings 折磨到凌晨的故事?评论区聊聊,说不定我们还能拼出一代 iOS 开发者的共同记忆。

目录[+]