2023-10-09

学习 SwiftUI

距我上一次开发 iOS App 的经历已经几乎过去 10 年了,当时开发使用 Objective-C 加上 UIKit,使用 Interface Builder 来做界面。Interface Builder 是苹果公司为了提升苹果开发者的开发体验和提高开发效率而设计的一套开发工具,用于快速构建 iOS App 的界面。Interface Builder 虽然可用,但是效率却并不高,特别在界面元素很多的情况下进行界面修改非常的困难。所以很多开发者在开发 iOS App 时都使用代码来手动创建界面元素,摒弃了 Interface Builder。开发工具、语言、框架都在不断地更新换代,苹果公司为了能够吸引更多的开发者,推出了更加现代化的语言:Swift,用来取代古老的 Objective-C,而随之而来的是新的界面开发语言 SwiftUI。

最近有个项目正好需要开发移动 App,而我需要趁着这个机会重新拾回 App 的开发能力,也许这就是非常好的一个学习 SwiftUI 的机会。

其实在调研时,我并不确定是使用 SwiftUI 还是使用传统的 UIKit 来开发新的 iOS App。问过几个朋友,他们的 App 仍然是在使用 UIKit,再加上我对 Objective-C 的开发比较熟悉,所以当时我对于使用 SwiftUI 并不太有信心。但不管怎么样,SwiftUI 已经推出多年,而苹果并没有像微软那样,会把一个重量极的框架轻易丢弃,并且经过这些年 SwiftUI 也在不断地更新和升级。所以内心还是希望学习 SwiftUI 并跟上苹果的步伐。

翻查资料,在 Reddit 上看到一些讨论,似乎大家都推荐新的 App 使用 SwiftUI 来制作界面。而关于 SwiftUI 的学习,大家都推荐斯坦福大学的一个关于 SwiftUI 的免费公开课,CS193p 2023。这个课程是在今年年初的时候推出的,教授是 Paul Hegarty,他引导你从零开始学习 SwiftUI,并且在过程中会介绍一些基本的架构设计和关于 Swift 语言的语法及使用。在课程中会制作两个简单的 App 以方便示范,整个公开课似乎也不长,一共 15 节课,每课大概一个多小时左右。国庆放假这么多天,正好宅在家把这 15 节公开课刷完,不管是不是使用 SwiftUI 来制作新的 App,我觉得都应该对其进行学习和了解后再做决定。

课程全程英文,若不熟悉可以打开英文字幕,没有深奥的单词,非常好懂。大概花了四天的时间把 15 节课都刷完了,其中第一个范例 App 在课程结束后自己做了一遍。整个过程的感受就是:使用 SwiftUI 来制作界面,真是非常的舒适。SwiftUI 使用了当前最流行的技术,全程不使用鼠标拖拉控件,只使用描述代码来建立界面各元素,然后直接可以在预览窗口中看到结果,界面制作效率非常高,像极了之前使用 React 来开发网站的感觉。同时 Swift 语言本身在语法上简单却严谨,再加上强大的 XCode 提供 IDE 支持,所以在学习和开发的过程中非常的顺畅。课程同时介绍了 MVVM(Model-View-ViewModel),不同于以前的 MVC 设计模式,其最大限度的把界面及数据分开,同时 MVVM 号称可以单独针对 ViewModel 编写测试用例,这样能解决界面难以测试的问题。

课程结束后我就开始搭建新的 App 界面。在开发的过程中,能够感受到苹果在 SwiftUI 上花费了很多资源和精力,虽然 Xcode 比 10 年前使用的时候bug多了一些(当时我几乎很少碰到 Xcode 的 bug,也许是我没有使用 Interface Builder 的缘故)。苹果在开发语言上的兼容性也做得非常好,项目中同时存在 C/C++,Objective-C 和 Swift/SwiftUI,三者的源代码可以在项目中混合使用,直接编译出同一个 App。

我不知道使用 SwiftUI 来开发 App 还会碰到哪些问题,但是现在看来,使用其来开发新的 iOS App 应该是一个明智的选择。

MATTHEW
桂ICP备17005075号