SwiftUI 一周的体验让我想起了当初上手 Swift 时的感觉,总结下来就是 Apple 的新技术都基本需要 3 年以上的时间才足以胜任主流的开发需求,特别是前期,应用范围特别有限,优势仅仅局限于 Apple 所演示的那些少数简单范例,稍微施展拳脚就能很容易就把编译器逼疯,让你感觉电脑随时准备要起飞。

当遇到问题需要搜索解决办法时,你时常得到的答案就是“暂时办不到”,也许等到明年 WWDC 就可以了。而明年你的代码很有可能完全无法运行,你可能要抛弃过去一年的种种尝试,从头来过才能逐步摸清新的路数。事实上,我觉得 Apple 也乐意让我们不断碰壁,不断尝试,来帮助他们找到或者说修正新技术的前进之路,不然就像当初如果只是把 ObjC 翻译成 Swift 那真的大可不必。SwiftUI 能从 React 中学到点什么,又同时可以保留 UIKit 的优势,这个问题也需要几年时间才能找到答案。但我确定的一点是,SwiftUI 将在跨平台开发中起到关键作用,Apple 希望开发者能在他们生态中的方方面面都施展拳脚,这是个双赢的棋局,既能帮助 Apple 巩固生态优势,同时降低开发者的开发成本,谁都不希望过度依赖某一个平台,鸡蛋还是放在多个篮子里比较好。

相比去年 SwiftUI 的小试牛刀,当时可以轻易把 Xcode 搞垮,经过许多 Workaround 之后 App 勉强可以运行起来达到想要的效果,仅此而已,毫无用户体验可言,性能上甚至是不可用的程度。今年同样的代码运行效果已经大为改观,虽然还是有不少的 UI 问题,许多痛点还在,不少 Workaround 还要继续保留,但已经可以看出相比去年向前迈进了一大步。

从当初 AutoLayout 和 Swift 到如今的 SwiftUI,阵痛期过后回过头看过去的经历还是值得的,只是相比二十年前,如今苹果的新技术多了些许粗糙,对旧技术少了些许果断,大公司的烙印越来越明显,许多事情的做法能越来越多的看到曾经在微软和 Intel 身上出现的影子。