SwiftUI: 苹果的一次天才尝试

时间回到一个月前的 WWDC 19 现场,当苹果宣布推出 SwiftUI 时,所有观众为其优雅的语法、 强大的实时预览 preview特性而欢呼雀跃,在发布之后几天,各路人马推入巨大的热情,研究 SwiftUI DSL 语言设计、Swift5.1 的新特性、 Combine 库的使用方法,产出了很多的文章。熟悉 Swift 语言的会从 Swift 演进的角度对新特性的来由、场景用法等深度解析;熟稔动画的作者,则用 SwiftUI 用极简的代码玩出酷炫的效果;以前玩 reactive-cocoa 类型开发模式的大佬,则对 Combine 库做了深入的探讨。 作者对 Swift 语言是新手、水平有限,这篇文章不会深入的讨论 Swift 语法特性和 Combine 的使用及实现原理。而是分享在这几星期期间,一边学习其他人的文章,一遍使用 SwiftUI 构建网易严选的 iPad 版本 —— YanxuanHD(源码见参考链接)过程中思考和感悟。从最初的惊喜到迷茫、再到困惑直到若有所得,拙作在这里抛砖引玉。 对于分享的方法,我有个小小的执念,我在学习新语言的时候,会觉得国外的一些人写的文章和书籍,很简单易懂、看完也容易记住;而我们国人写书文章很少有这种感觉。我总结了下原因; 那些的外国人设计实现的程序语言和框架,他们对程序语言和框架的了解,更丰富和立体。 我们接触的这些语言框架时候已经是个完整体,面对 1K+ 的 API,十几个模块,我们读文档的时候,他们就像是已经组装好的钟表,了解它就像是在拆钟表,直到你拆解完毕,并尝试多次组装他们,你才有知道如何分而治之,先做小模块、后组装成整体,以及各个模块的组装顺序如何协调才是最优的;但是如果是个钟表设计者,他不仅仅知道如何正确组织组装,而且知道为什么要这样做,这样做有什么好处,那样做有什么坏处,如果你知道这些 API 文档和代码里没有的额外信息,你自然会对 […]

Read more